发明内容
为解决如何快速定位错误特效实现代码的问题,本申请实施例提出一种图像处理方法、设备和存储介质。
第一方面,本申请实施例提供一种图像处理方法,在包括多个渲染操作的图像渲染过程中,该方法包括:
目标渲染操作完成后,将该目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存;
输出主处理器的缓存中的上述渲染结果。
本申请实施例提供的方法在目标渲染操作完成后,即时从图形处理器中读取其渲染结果并输出,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。应当指出的是,本申请实施例提供的方法不仅可以用于对目标渲染操作进行渲染异常检测,还可以用于其他实现场景,例如在游戏场景中,采用本申请实施例提供的方法进行抓帧处理,从而抓取目标游戏画面进行分析。
可选的,渲染结果用于对所述目标渲染操作进行渲染异常检测。
可选的,所述目标渲染操作是根据客户端人机交互界面的目标控件触发事件确定的。
由于从图形处理器读取渲染结果的内存开销较大,为了避免频繁抓取渲染结果,可以仅在发生目标空间触发事件进行渲染效果的抓取,以减少内存开销。
在上述任意方法实施例的基础上,上述输出主处理器的缓存中的上述渲染结果的实现方式可以包括以下至少一个步骤:
在客户端的主线程上根据主处理器的缓存中的渲染结果生成展示图像,并在显示屏上显示展示图像;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像保存到第一非瞬时性存储器的指定路径;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像发送给第一接收端设备;
在客户端的后台线程上将主处理器的缓存中的渲染结果保存到第二非瞬时性存储器的指定路径;
在客户端的后台线程上将主处理器的缓存中的渲染结果发送给第二接收端设备。
在上述任意方法实施例的基础上,所述将所述目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存,包括:
在客户端的渲染线程上将所述目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存。
本申请实施例提供的方法,在客户端的渲染线程进行图像的抓取,而不是在操作系统层面进行图像的抓取,不受限于系统权限,在不同的操作系统、不同的操作系统版本上都可以正常运行。
第二方面,本申请实施例提供一种电子设备,该电子设备包括:
图像抓取模块,用于目标渲染操作完成后,将所述目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存,所述目标渲染操作为包括多个渲染操作的图像渲染过程中的渲染操作;
图像输出模块,用于输出所述主处理器的缓存中的所述渲染结果。
本申请实施例提供的电子设备在目标渲染操作完成后,即时从图形处理器中读取其渲染结果并输出,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。应当指出的是,本申请实施例提供的电子设备不仅可以用于对目标渲染操作进行渲染异常检测,还可以用于其他实现场景,例如在游戏场景中,采用本申请实施例提供的电子设备进行抓帧处理,从而抓取目标游戏画面进行分析。
可选的,所述渲染结果用于对所述目标渲染操作进行渲染异常检测。
可选的,所述目标渲染操作是根据客户端人机交互界面的目标控件触发事件确定的。
由于从图形处理器读取渲染结果的内存开销较大,为了避免频繁抓取渲染结果,可以仅在发生目标空间触发事件进行渲染效果的抓取,以减少内存开销。
在上述任意电子设备施例的基础上,可选的,图像输出模块用于执行以下至少一个步骤:
在客户端的主线程上根据主处理器的缓存中的渲染结果生成展示图像,并在显示屏上显示展示图像;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像保存到第一非瞬时性存储器的指定路径;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像发送给第一接收端设备;
在客户端的后台线程上将主处理器的缓存中的渲染结果保存到第二非瞬时性存储器的指定路径;
在客户端的后台线程上将主处理器的缓存中的渲染结果发送给第二接收端设备。
在上述任意电子设备施例的基础上,可选的,所述图像抓取模块用于:在客户端的渲染线程上将所述目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存。
本申请实施例提供的电子设备,在客户端的渲染线程进行图像的抓取,而不是在操作系统层面进行图像的抓取,不受限于系统权限,在不同的操作系统、不同的操作系统版本上都可以正常运行。
第三方面,本发明实施例提供一种电子设备,包括处理器和存储器;
存储器用于存储执行上述第一方面任意方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本申请实施例提供的电子设备在目标渲染操作完成后,即时从图形处理器中读取其渲染结果并输出,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。应当指出的是,本申请实施例提供的电子设备不仅可以用于对目标渲染操作进行渲染异常检测,还可以用于其他实现场景,例如在游戏场景中,采用本申请实施例提供的电子设备进行抓帧处理,从而抓取目标游戏画面进行分析。
第四方面,本发明实施例提供一种计算机可读存储介质,存储有实现上述第一方面任意方法实施例的程序。
本申请实施例提供的计算机可读存储介质中存储的程序在目标渲染操作完成后,即时从图形处理器中读取其渲染结果并输出,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。应当指出的是,上述程序不仅可以用于对目标渲染操作进行渲染异常检测,还可以用于其他实现场景,例如在游戏场景中,采用上述程序进行抓帧处理,从而抓取目标游戏画面进行分析。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
完整图像渲染过程的代码量往往较大,以包括人脸特效在内的图像渲染过程为例,其代码量往往在几万行甚至十几万行。一个渲染过程包括多个渲染操作,每个渲染操作对应一个图像特效。在渲染过程中,每个渲染操作完成后,其渲染结果保存到渲染执行硬件的帧缓冲(FBO)单元,并覆盖掉上一个渲染操作的渲染结果,整个渲染过程结束后,会根据最终的渲染结果显示图像。当包括多个图像特效的渲染操作的完整渲染过程的渲染结果出错,无法直观了解到底是哪个渲染操作出现了问题,若通过逐行排查代码的方式对图像渲染过程的代码进行遍历排查,其工作量巨大。有鉴于此,本申请实施例提供一种图像处理方法,在目标渲染操作完成后,及时从GPU(Graphics Processing Unit,图形处理器)中读取其渲染结果,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。
本申请实施例提供的方法可以应用在模拟移动终端运行环境的虚拟机上,也可以应用在移动终端上,本申请实施例对此不做限定。在包括多个渲染操作的图像渲染过程中,如图1所示,本申请实施例提供的方法包括如下操作:
步骤101、目标渲染操作完成后,将该目标渲染操作的渲染结果从GPU的帧缓冲单元写入主处理器的缓存。
其中,渲染结果是指GPU执行目标渲染操作得到的纹理信息。
在不同的使用场景下,可以选用不同的GPU。作为举例而非限定,GPU可以是显卡,还可以是ASIC(Application Specific Integrated Circuit,专用集成芯片)中的GPU模块等等。
在不同的使用场景下,也可以选用不同的主处理器。作为举例而非限定,主处理器可以是CPU(Central Processing Unit,中央处理器)、MPU(Microprocessor Unit,微处理器)、FPGA(Field Programmable Gate Array,可编程逻辑门阵列)、ASIC等等。
应当指出的是,实际应用中,可能存在GPU和主处理器由同一个芯片实现的情况,例如在ASIC上实现主处理器和GPU的功能。
步骤102、输出主处理器的缓存中的上述渲染结果。
可选的,渲染结果用于对所述目标渲染操作进行渲染异常检测。
应当指出的是,实际应用中,还可以采用本申请实施例提供的方法进行抓帧处理,并用于其他目的,本申请实施例对此不做限定。
其中,步骤102可以包括以下一个或多个步骤的组合:
在客户端的主线程上根据主处理器的缓存中的渲染结果生成展示图像,并在显示屏上显示展示图像;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像保存到第一非瞬时性存储器的指定路径;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像发送给第一接收端设备;
在客户端的后台线程上将主处理器的缓存中的渲染结果保存到第二非瞬时性存储器的指定路径;
在客户端的后台线程上将主处理器的缓存中的渲染结果发送给第二接收端设备。
其中,在显示屏上显示的展示图像的尺寸和分辨率可以根据需要配置,既可以是全显示区域的大图,也可以是指定尺寸的缩略图。作为举例而非限定,若特效对应的渲染操作均为目标渲染操作,那么,既可以在每个目标渲染操作的渲染效果抓取到主处理器的缓存后,分别进行展示;也可以在渲染过程完成后,同时展示各个目标渲染操作的缩略图,响应于用户对其中某个目标渲染操作的缩略图的选中操作,以全屏展示的方式展示该目标渲染操作的大图。在显示屏上展示目标渲染操作对应的展示图像,可以及时、直观地将目标渲染操作的渲染结果呈现给用户,以方便通过观察展示图像来判断目标渲染操作是否存在异常。
其中,存储到第一非瞬时性存储器的指定路径的展示图像的尺寸和分辨率可以根据需要配置。实际应用中,存储在第一非瞬时性存储器的到指定路径的展示图像和在显示屏上显示的展示图像可以是同一个图像,即根据上述渲染结果生成展示图像,一方面在显示屏上展示该展示图像,一方面将该展示图像保存到上述第一非瞬时性存储器的指定路径。
根据使用场景不同,可以选用不同的第一非瞬时性存储器。以移动终端上实现本方法为例,第一非瞬时性存储器可以是移动终端的内存,也可以是移动终端外接的存储卡。若第一非瞬时性存储器是移动终端的内存,上述指定路径可以是移动终端系统相册的存储路径,即将上述展示图像保存到移动终端的系统相册中,以便用户通过系统相册调取展示图像。以运行在电脑上的虚拟机实现本方法为例,第一非瞬时性存储器可以是电脑的硬盘,也可以是电脑外接的存储卡、U盘、移动硬盘等外接存储设备。
其中,存储到第二非瞬时性存储器的指定路径的渲染结果的存储方式可以有多种。例如,以.TXT格式的文件保存渲染结果,以word文档的形式保存渲染结果,以系统日志的形式保存渲染结果等等。实际应用中,第二非瞬时性存储器可以与第一非瞬时性存储器是相同的存储器,也可以是不同的存储器。
通过在非瞬时性存储器中保存展示图像或渲染结果,可以作为历史数据,便于后序查看,也便于在跨平台场景下进行查看。
其中,发送给第一接收端设备的展示图像的尺寸和分辨率可以根据需要配置。实际应用中,发送给第一接收端设备的展示图像与上述存储的展示图像,以及在显示屏上显示的展示图像可以是同一个图像,即根据上述渲染结果生成展示图像,一方面在显示屏上展示该展示图像,一方面将该展示图像保存到上述第一非瞬时性存储器的指定路径,一方面将该展示图像发送给第一接收端设备。第一接收端设备可以是移动终端、电脑、服务器等等。
其中,发送给第二接收端设备的渲染结果的存储方式可以有多种。例如,以.TXT格式的文件保存渲染结果,以word文档的形式保存渲染结果,以系统日志的形式保存渲染结果等等。实际应用中,第二接收端设备与第一接收端设备可以是同一个设备,也可以是不同的设备。
在上述任意方法实施例的基础上,可以将渲染过程中的每个渲染操作均设定为目标渲染操作。
由于从GPU读取渲染结果的内存开销较大,为了避免频繁抓取渲染结果,可以选择其中部分渲染操作作为目标渲染操作。
其中,目标渲染操作可以是预先指定的,例如,根据经验判断,渲染过程中,往往是各个特效渲染操作容易出现异常,那么,预先将各个特效渲染操作或者某些指定特效渲染操作配置为目标渲染操作,在渲染过程中,通过读取配置信息确认目标渲染操作。
目标渲染操作也可以在渲染过程中确定的。一种实现方式中,在渲染过程中,客户端人机交互界面的目标控件被触发而生成触发事件,目标渲染操作是根据该目标控件触发事件确定的。更进一步的,上述目标渲染操作可以是目标控件触发事件指示的渲染操作,上述目标渲染操作也可以是发生该目标控件触发事件时的当前渲染操作。另一种实现方式中,预先设定定时器的计时时长,在指定的时机(例如渲染过程开始时)启动该定时器,当定时器计时超时,当前的渲染操作即为目标渲染操作。
下面以在移动终端上实现上述方法为例,结合具体应用场景对上述方法进行说明。
用户通过移动终端上安装的客户端软件选择了需要渲染的照片,该照片为人像照片,并且选择了滤镜、美颜、整形这三个特效。
该客户端软件包括UI(User Interface,用户界面)模块、VE(Video engine,视频引擎)模块、音视频编解码模块和渲染(effect)模块,渲染过程中会创建如下三个线程:UI模块控制的主线程,VE模块控制的渲染线程,以及VE模块控制的后台线程,其中,渲染模块通过渲染线程实现其功能。
在一个实施例中,预先确定了滤镜渲染操作、美颜渲染操作和整形渲染操作均为目标渲染操作,渲染过程开始后,一方面VE模块通过回调方法从移动终端的CPU中读取用户选择的照片,转换成纹理后传递给Effect模块,另一方面,VE模块在渲染线程中发送广播消息,该广播消息中携带滤镜渲染操作、美颜渲染操作和整形渲染操作各自的标识信息(例如特效名称),以请求对这三个渲染操作进行图像抓取;effect模块接收到纹理后,一方面,通过调用opengl的各种命令进行滤镜处理和绘制,并将绘制得到的纹理信息(渲染结果)绑定到GPU的FBO上,另一方面接收到上述广播消息,待滤镜渲染操作完成,通过调用read pixel(读取像素)方法将FBO中的纹理信息读取到CPU的缓存中;VE模块在后台线程上将滤镜步骤的纹理信息转换为RGB图片,并保存到移动终端的系统相册中;effect模块以FBO中保存的纹理信息为输入,继续调用opengl的各种命令进行美颜处理和绘制,并将绘制得到的纹理信息绑定到GPU的FBO上,通过调用read pixel方法将FBO中的纹理信息读取到CPU的缓存中;VE模块在后台线程上将美颜步骤的纹理信息转换为RGB图片,并保存到移动终端的系统相册中;effect模块以FBO中保存的纹理信息为输入,继续调用opengl的各种命令进行整形处理和绘制,并将绘制得到的纹理信息绑定到GPU的FBO上,通过调用read pixel方法将FBO中的纹理信息读取到CPU的缓存中;VE模块在后台线程上将整形步骤的纹理信息转换为RGB图片,并保存到移动终端的系统相册中,将滤镜步骤、美颜步骤和整形步骤的纹理信息(裸数据)以文本形式保存到移动终端的内存中;UI模块在主线程上将滤镜步骤对应的纹理信息、美颜步骤对应的纹理信息和整形步骤对应的纹理信息分别处理为缩略图,一并展示在移动终端显示屏的显示区域;若用户选择了其中某个渲染操作对应的缩略图,UI模块在主线程上生成该渲染操作对应的大图,并以填充显示区域的方式展示该大图。
在另一个实施例中,渲染过程开始后,UI模块通过主线程在移动终端显示屏的显示区域上提示当前渲染操作;VE模块通过回调方法从移动终端的CPU中读取用户选择的照片,转换成纹理后传递给Effect模块;effect模块接收到纹理后,通过调用opengl的各种命令进行滤镜处理和绘制,并将绘制得到的纹理信息绑定到GPU的FBO上;用户在滤镜渲染操作执行过程中,选择该步骤作为目标渲染操作,UI模块通过主线程检测到用户的该触发动作,向effect模块发送图像抓取请求消息,effect模块接受到该消息,待滤镜渲染操作完成,通过调用read pixel方法将FBO中的纹理信息读取到CPU的缓存中;VE模块在后台线程上将滤镜步骤的纹理信息转换为RGB图片,并保存到移动终端的系统相册中;UI模块在主线程上将滤镜渲染操作对应的纹理信息处理为大图,并在移动终端显示屏上以填充显示区域的方式显示该大图;用户通过观察确定滤镜渲染操作无异常,通过点击显示屏上的控件指示继续渲染过程,UI模块响应用户的该触发动作,通知effect模块继续工作,effect模块以FBO中保存的纹理信息为输入,继续调用opengl的各种命令进行美颜处理和绘制,并将绘制得到的纹理信息绑定到GPU的FBO上;effect模块以FBO中保存的纹理信息为输入,继续调用opengl的各种命令进行整形处理和绘制,并将绘制得到的纹理信息绑定到GPU的FBO上;用户在整形渲染操作执行过程中,选择该步骤作为目标渲染操作,UI模块通过主线程检测到用户的该触发动作,向effect模块发送图像抓取请求消息,effect模块接受到该消息,待整形渲染操作完成,通过调用read pixel方法将FBO中的纹理信息读取到CPU的缓存中;VE模块在后台线程上将整形渲染操作的纹理信息转换为RGB图片,并保存到移动终端的系统相册中;UI模块在主线程上将整形渲染操作对应的纹理信息处理为大图,并在移动终端显示屏上以填充显示区域的方式显示该大图;用户通过观察确定整形渲染操作异常,则可以进一步查看整形渲染操作对应的代码,或者采取其他手段进一步定位异常位置。
为了抓取目标渲染操作的渲染结果,可以采用现有的抓帧工具。现有的抓帧工具包括苹果公司提供的抓帧工具和谷歌公司提供的抓帧工具。但这两种抓帧工具均存在各种各样的问题,导致无法稳定使用。为此,发明人提出了一种新的图像处理方法,可以稳定运行以实现图像的抓取。
该图像处理方法可以运行在模拟移动终端运行环境的虚拟机上,也可以应用在移动终端上,还可以运行在电脑的操作系统上。如图2所示,本申请实施例提供的方法包括如下操作:
步骤201、目标渲染操作完成后,通过客户端的渲染线程从GPU的帧缓冲单元读取该目标渲染操作的渲染结果。
其中,对GPU的说明可以参照上述实施例,此处不再赘述。
其中,对目标渲染操作的说明可以参照上述实施例,此处不再赘述。
步骤202、通过渲染线程将上述渲染结果写入主处理器的缓存。
其中,对主处理器的说明可以参照上述实施例,此处不再赘述。
本申请实施例提供的方法,在客户端的渲染线程进行图像的抓取,而不是在操作系统层面进行图像的抓取,不受限于系统权限,在不同的操作系统、不同的操作系统版本上都可以正常运行。
可选的,本申请实施例提供的方法中,视频引擎可以通过客户端的主线程或渲染线程向渲染模块发送图像抓取请求消息,渲染模块在接收到该图形抓取请求消息后,在渲染线程上将所述目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存。相应的,目标渲染操作是根据图像抓取请求消息确定的。
实际应用中,根据业务场景不同,可以在客户端的主线程发送图像抓取请求消息,也可以在渲染线程发送图像抓取请求消息。
由于从渲染执行硬件读取渲染结果的内存开销较大,为了避免频繁抓取渲染结果,可以仅在接收到图像抓取请求消息后进行渲染效果的抓取,以减少内存开销。
基于与图1所示的方法相同的发明构思,本申请实施例还提供一种电子设备,如图3所示,该电子设备包括:
图像抓取模块301,用于目标渲染操作完成后,将所述目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存,所述目标渲染操作为包括多个渲染操作的图像渲染过程中的渲染操作;
图像输出模块302,用于输出所述主处理器的缓存中的所述渲染结果。
本申请实施例提供的电子设备在目标渲染操作完成后,即时从图形处理器中读取其渲染结果并输出,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。应当指出的是,本申请实施例提供的电子设备不仅可以用于对目标渲染操作进行渲染异常检测,还可以用于其他实现场景,例如在游戏场景中,采用本申请实施例提供的电子设备进行抓帧处理,从而抓取目标游戏画面进行分析。
可选的,所述渲染结果用于对所述目标渲染操作进行渲染异常检测。
可选的,所述目标渲染操作是根据客户端人机交互界面的目标控件触发事件确定的。
由于从图形处理器读取渲染结果的内存开销较大,为了避免频繁抓取渲染结果,可以仅在发生目标空间触发事件进行渲染效果的抓取,以减少内存开销。
在上述任意电子设备施例的基础上,可选的,图像输出模块用于执行以下至少一个步骤:
在客户端的主线程上根据主处理器的缓存中的渲染结果生成展示图像,并在显示屏上显示展示图像;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像保存到第一非瞬时性存储器的指定路径;
在客户端的后台线程上根据主处理器的缓存中的渲染结果生成展示图像,并将展示图像发送给第一接收端设备;
在客户端的后台线程上将主处理器的缓存中的渲染结果保存到第二非瞬时性存储器的指定路径;
在客户端的后台线程上将主处理器的缓存中的渲染结果发送给第二接收端设备。
在上述任意电子设备施例的基础上,可选的,所述图像抓取模块用于:在客户端的渲染线程上将所述目标渲染操作的渲染结果从图形处理器的帧缓冲单元写入主处理器的缓存。
本申请实施例提供的电子设备,在客户端的渲染线程进行图像的抓取,而不是在操作系统层面进行图像的抓取,不受限于系统权限,在不同的操作系统、不同的操作系统版本上都可以正常运行。
上述各实施例中的电子设备可以包括智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备、车载电脑、智能音箱、个人电脑、超级计算机等等。其中,个人电脑、超级计算机上部署有模拟移动终端运行环境的虚拟机。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
基于与方法同样的发明构思,本申请实施例提供一种电子设备,包括处理器和存储器;
存储器用于存储执行上述任意方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本申请实施例提供的电子设备在目标渲染操作完成后,即时从图形处理器中读取其渲染结果并输出,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。应当指出的是,本申请实施例提供的电子设备不仅可以用于对目标渲染操作进行渲染异常检测,还可以用于其他实现场景,例如在游戏场景中,采用本申请实施例提供的电子设备进行抓帧处理,从而抓取目标游戏画面进行分析。
若本申请实施例提供的电子设备为移动终端,如图4所示,本申请实施例提供的移动终端不仅包括处理器和存储器,还包括输入设备(例如触摸屏、摄像头、传声器等)、输出设备(例如显示屏、扬声器等)、通信模块、电源模块。
其中,存储器、输入设备、输出设备、通信模块、电源模块通过串口、总线或USB接口与处理器连接。其中,对于单处理器移动终端,处理器即CPU(中央处理器);对于双处理器移动终端,处理器包括主处理器和从处理器,由其主处理器执行应用程序实现本发明实施例提供的方法,若其中需要与外界进行通信,则由从处理器控制通信模块配合实现;对于包含GPU(图形处理器)和CPU的终端设备,处理器是指GPU和CPU,由GPU和CPU配合或由CPU单独实现本申请实施例提供的方法。
其中,移动终端的存储器可以但不仅限于包括:Flash(闪存)存储器、RAM(随机存取存储器)、ROM(只读存储器)等。RAM主要用于存储终端设备运行时的程序和数据,需要执行的程序或者需要处理的数据都必须先装入RAM内。ROM主要用于检查终端设备操作系统的配置情况,并提供最基本的输入输出(I/O)程序。Flash存储器是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)存储器,数据删除不是以单个的字节为单位,而是以固定的区块为单位。由于Flash存储器断电时仍能保存数据,它通常被用来保存设置信息,如用户对手机的设置信息等。
应当指出的是,针对不同的移动终端(单处理器智能手机、双处理器智能手机、智能穿戴设备、平板电脑等等),其可能包括比图4所示的终端设备更多或更少的硬件结构,但只要包括存储器和处理器,且能够实现上述方法实施例的功能,均在本公开的保护范围内。
基于与方法同样的发明构思,本申请实施例提供一种计算机可读存储介质,存储有实现上述任意方法实施例的程序。
本申请实施例提供的计算机可读存储介质中存储的程序在目标渲染操作完成后,即时从图形处理器中读取其渲染结果并输出,以根据该渲染结果对目标渲染操作进行渲染异常检测,若该目标渲染操作出错,会反映到其渲染结果上,根据渲染结果可以发现目标渲染操作的异常,从而将渲染错误定位到目标渲染操作,进而仅需要对目标渲染操作对应的代码进行问题排查。单个渲染操作的代码量远远小于完整的渲染过程的代码量,因此可以达到快速定位渲染问题代码的目的。应当指出的是,上述程序不仅可以用于对目标渲染操作进行渲染异常检测,还可以用于其他实现场景,例如在游戏场景中,采用上述程序进行抓帧处理,从而抓取目标游戏画面进行分析。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
上述所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。