一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

渲染时长的确定方法、装置、存储介质和电子装置与流程

2022-05-31 23:33:28 来源:中国专利 TAG:


1.本发明涉及计算机领域,具体而言,涉及一种渲染时长的确定方法、装置、存储介质和电子装置。


背景技术:

2.目前,大部分游戏客户端是通过开放式图形库(opengl for embedded systems,简称为gles)来进行画面的渲染,在测试游戏性能的过程中,如果发现游戏瓶颈在图形应用处理器(graphics processing unit,简称为gpu)侧,后续更深入的定位具体是哪些绘制导致渲染时长增加是相对困难的,存在难以确定渲染时长的技术问题。
3.针对现有技术中的难以确定渲染时长的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本发明至少部分实施例提供了一种渲染时长的确定方法、装置、存储介质和电子装置,以至少解决难以确定渲染时长的技术问题。
5.为了实现上述目的,根据本发明其中一实施例,提供了一种渲染时长的确定方法。该方法可以包括:基于钩子函数将多个第一目标函数加载至目标应用中;获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染;在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。
6.可选地,基于第一指令集第二指令集确定目标渲染时长,包括:基于第二指令集对目标画面中除目标对象之外的画面进行渲染,得到第一渲染时长;启动第一目标指令,且基于启动后的第一目标指令和第二指令集对包括目标对象在内的目标画面进行渲染,得到第二渲染时长;基于第一渲染时长和第二渲染时长确定目标渲染时长。
7.可选地,该方法还包括:确定目标应用的第二目标函数,其中,第二目标函数用于运行目标应用,第二目标函数的原始指针指向开放式图形库中的第三目标函数,第三目标函数用于对目标画面进行渲染;基于钩子函数将多个第一目标函数加载至目标应用中,包括:基于钩子函数将原始指针修改为目标指针,并将目标指针所指向的多个第一目标函数加载至目标应用中。
8.可选地,该方法还包括:在目标应用调用第一目标函数之后,调用第三目标函数。
9.可选地,该方法还包括:将第一终端的第一端口映射至第二终端的第二端口上,其中,目标应用运行在第一终端上;将第一指令集通过第一端口和第二端口发送至第二终端上。
10.可选地,在第一指令集中屏蔽目标画面中目标对象对应的第一目标指令,包括:获取由第二终端第一指令集中屏蔽的第一目标指令。
11.可选地,启动第一目标指令,包括:获取由第二终端启动的第一目标指令。
12.可选地,该方法还包括:第一指令集中的指令为开放式图形库中的组调试指令。
13.为了实现上述目的,根据本发明的另一方面,还提供了一种渲染时长的确定装置。该装置可以包括:加载单元,用于基于钩子函数将多个第一目标函数加载至目标应用中;获取单元,用于获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染;屏蔽单元,用于在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;确定单元,用于基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染所述目标对象所用的时长。
14.为了实现上述目的,根据本发明的另一方面,还提供了一种计算机可读存储介质。该计算机可读存储介质中存储有计算机程序,其中,在计算机程序被处理器运行时控制计算机可读存储介质所在设备执行本发明实施例的渲染时长的确定方法。
15.为了实现上述目的,根据本发明的另一方面,还提供了一种电子装置。该电子装置可以包括存储器和处理器,其特征在于,存储器中存储有计算机程序,处理器被设置为被处理器运行计算机程序以执行本发明实施例的渲染时长的确定方法。
16.在本发明至少部分实施例中,基于钩子函数将多个第一目标函数加载至目标应用中;获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染;在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。也就是说,本技术基于钩子函数,在目标应用运行时,加载基于钩子函数的多个第一目标函数,得到第一指令集,通过在不渲染目标画面的目标对象时的第二指令集和包括渲染目标对象的第一指令集,来确定渲染目标对象所用的时长,从而达到了确定渲染时长的技术效果,解决了难以确定渲染时长的技术问题。
附图说明
17.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
18.图1是根据本发明其中一实施例的一种渲染时长的确定方法的移动终端的硬件结构框图;
19.图2是根据本发明其中一实施例的一种渲染时长的确定方法的流程图;
20.图3是根据相关技术中的一种屏蔽/启用某些绘制方法的示意图;
21.图4是根据本发明其中一实施例的一种渲染时长的确定方法的流程图;
22.图5是根据本发明其中一实施例的另一种渲染时长的确定方法的流程图;
23.图6是根据本发明其中一实施例的一种渲染时长的确定装置的结构框图。
具体实施方式
24.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是
本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
25.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
26.根据本发明其中一实施例,提供了一种渲染时长的确定方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
27.该方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,该移动终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobile internet devices,简称为mid)、pad、游戏机等终端设备。图1是本发明实施例的一种渲染时长的确定方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于中央处理器(cpu)、图形处理器(gpu)、数字信号处理(dsp)芯片、微处理器(mcu)、可编程逻辑器件(fpga)、神经网络处理器(npu)、张量处理器(tpu)、人工智能(ai)类型处理器等的处理装置)和用于存储数据的存储器104。可选地,上述移动终端还可以包括用于通信功能的传输设备106、输入输出设备108以及显示设备110。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
28.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的渲染时长的确定方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的渲染时长的确定方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
29.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
30.输入输出设备108中的输入可以来自多个人体学接口设备(human interface device,简称为hid)。例如:键盘和鼠标、游戏手柄、其他专用游戏控制器(如:方向盘、鱼竿、
跳舞毯、遥控器等)。部分人体学接口设备除了提供输入功能之外,还可以提供输出功能,例如:游戏手柄的力反馈与震动、控制器的音频输出等。
31.显示设备110可以例如平视显示器(hud)、触摸屏式的液晶显示器(lcd)和触摸显示器(也被称为“触摸屏”或“触摸显示屏”)。该液晶显示器可使得用户能够与移动终端的用户界面进行交互。在一些实施例中,上述移动终端具有图形用户界面(gui),用户可以通过触摸触敏表面上的手指接触和/或手势来与gui进行人机交互,此处的人机交互功能可选的包括如下交互:创建网页、绘图、文字处理、制作电子文档、游戏、视频会议、即时通信、收发电子邮件、通话界面、播放数字视频、播放数字音乐和/或网络浏览等、用于执行上述人机交互功能的可执行指令被配置/存储在一个或多个处理器可执行的计算机程序产品或可读存储介质中。
32.在本实施例中提供了一种运行于上述移动终端的一种渲染时长的确定方法,图2是根据本发明其中一实施例的一种渲染时长的确定方法的流程图,如图2所示,该方法包括如下步骤:
33.步骤s202,基于钩子函数将多个第一目标函数加载至目标应用中。
34.在本发明上述步骤s202提供的技术方案中,钩子函数可以用hook函数表示,可以用于在目标应用调用函数时,监控/修改当前目标应用中画面绘制中的部分函数的调用。目标应用可以为移动终端的游戏应用,此处不做限定。第一目标函数可以为自定义函数。
35.可选地,在游戏应用调用函数时,通过钩子函数监控/修改当前画面绘制中的部分函数的调用得到第一目标函数,通过调用第一目标函数从而将第一目标函数加载至目标应用中。
36.步骤s204,获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染。
37.在本发明上述步骤s204提供的技术方案中,第一指令集可以为目标函数对应的指令,用于控制不同画面绘制的启用,可以为组调试指令,可以用debuggroup表示。对目标画面进行渲染可以为对单帧画面进行绘制,其中,可以包含不止通过一个目标函数完成对目标画面的绘制。
38.可选地,从多个第一目标函数中获取与第一函数对应的第一指令集,通过第一指令集控制对目标应用的目标画面进行渲染。
39.举例而言,将第一目标函数中的数据通过第一指令集进行存储,以第一指令集形式呈现在电脑端中,通过用户选择启用第一指令集中的某个指令,从而对目标应用的目标画面某一位置进行渲染。
40.步骤s206,在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染。
41.在本发明上述步骤s206提供的技术方案中,第一目标指令可以用户选择的指令,用于控制目标应用中的目标画面进行渲染。第二指令集可以为屏蔽第一指令集中的中的至少一个第一目标指令之后的到的指令集合,可以为当前组调试指令,用currentdebuggroups表示。
42.可选地,第一指令集存在多个目标指令,在第一指令集中选择屏蔽第一目标指令,可以通过在第一目标指令上进行标识的方法实现对第一目标指令的屏蔽,此处不做限定,
屏蔽第一目标指令后得到第二指令集,该第二指令集也即新的指令集。
43.举例而言,接收到用户对第一指令集中的第一目标指令进行屏蔽时,将该第一目标指令封锁,得到第二指令集。
44.步骤s208,基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。
45.在本发明上述步骤s208提供的技术方案中,目标渲染时长为渲染目标对象所用的时长,可以通过计算帧率得到目标渲染时长,通过监控第一指令集中指令的调用次数得到调用第一指令集时的帧率一,通过监控第二指令集中指令的调用次数得到调用第二指令集时的帧率二,通过比较调用第一指令集时的帧率一和调用第二指令集时的帧率二从而确定目标渲染时长,其中,目标对象可以为单帧画面中的某一物体。
46.可选地,帧率可以用fps表示,目标渲染时长为渲染目标对象所用的时长可以用t表示计算公式可以为
47.举例而言,渲染第一指令集对应的目标画面,监控完成渲染后第一指令集中指令的调用次数,得到渲染目标画面所需要的帧率一。第一指令集中的第一目标指令用于控制渲染目标画面中目标的渲染,屏蔽第一指令集中的第一目标指令得到第二指令集。渲染第二指令集对应的目标画面,监控完成渲染后第二指令集中指令的调用次数,得到渲染目标画面但不渲染选择目标对象所需要的帧率二。可以知道的是,由于渲染的东西少了,则帧率会增加,从而得到目标对象的渲染时长为
48.通过本技术上述步骤s202至步骤s208,基于钩子函数将多个第一目标函数加载至目标应用中;获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染;在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。也就是说,本技术基于钩子函数,在目标应用运行时,加载基于钩子函数的多个第一目标函数,得到第一指令集,通过在不渲染目标画面的目标对象时的第二指令集和包括渲染目标对象的第一指令集,来确定渲染目标对象所用的时长,从而达到了确定渲染时长的技术效果,解决了难以确定渲染时长的技术问题。
49.下面对该实施例上述方法进行进一步介绍。
50.作为一种可选的实施方式,步骤s208,基于第一指令集第二指令集确定目标渲染时长,包括:基于第二指令集对目标画面中除目标对象之外的画面进行渲染,得到第一渲染时长;启动第一目标指令,且基于启动后的第一目标指令和第二指令集对包括目标对象在内的目标画面进行渲染,得到第二渲染时长;基于第一渲染时长和第二渲染时长确定目标渲染时长。
51.在该实施例中,第一渲染时长可以为对目标画面中除目标对象之外的画面进行渲染得到的时长,第二渲染时长可以为对目标画面中包括目标对象的画面进行渲染得到的时长,因此,第二渲染时长减去第一渲染时长就可以得到渲染目标的时长,其中渲染目标的时长可以为渲染目标对象所需要的时长。
52.作为一种可选的实施方式,该方法还包括:确定目标应用的第二目标函数,其中,
第二目标函数用于运行目标应用,第二目标函数的原始指针指向开放式图形库中的第三目标函数,第三目标函数用于对目标画面进行渲染;步骤s202,基于钩子函数将多个第一目标函数加载至目标应用中,包括:基于钩子函数将原始指针修改为目标指针,并将目标指针所指向的多个第一目标函数加载至目标应用中。
53.在该实施例中,第二目标函数用于运行目标应用,第三目标函数可以为开放式图形库中的函数,用于对目标表画面进行渲染,基于钩子函数将原始指针修改为目标指针,并将目标指针指向多个第一目标函数,从而实现将多个第一目标函数加载至目标应用中。
54.可选地,原始指针指向为第三目标函数,目标指针指向为第一目标函数,第二目标函数通过原始指针调用第三目标函数,从而实现对目标表画面进行渲染。
55.作为一种可选的实施方式,该方法还包括:在目标应用调用第一目标函数之后,调用第三目标函数。
56.在该实施例中,通过钩子函数,实现先调用第二目标函数,然后调用第一目标函数,最后调用第三目标函数的顺序。
57.举例而言,正常的游戏应用调用函数的过程大致为,运行目标应用的函数a调用开放式图形库中的函数b,如画图函数(gldrawelements),这里的自定义函数假定标记为c。在钩子函数后,自定义函数c的指针覆盖了游戏应用中的b的指针,此时的调用顺序为a-》c-》b。需要说明的是,所有的监控调用次数和改变渲染参数,甚至屏蔽某个画图指令都是在c的逻辑里完成的。
58.作为一种可选的实施方式,该方法还包括:将第一终端的第一端口映射至第二终端的第二端口上,其中,目标应用运行在第一终端上;将第一指令集通过第一端口和第二端口发送至第二终端上。
59.在该实施列中,第一终端用于运行目标应用,可以为移动终端,如,安卓端、平板电脑端、电脑端等,第二终端用于自定义函数,可以为电脑端、安卓端、平板电脑端,此处不做限定。第一端口可以为第一终端启动的接口,用于与第二终端的连接,可以为系统提前设定的默认端口,也可以为用户根据实际需求设定的端口。第二端口可以为第二终端启动的接口,用于与第一终端的连接,可以为第二终端使用安卓平台调试桥(adb工具),从而实现连接第一终端和第二终端的连接。
60.可选地,将第一终端的第一端口映射至第二终端的第二端口上,通过第一端口和第二端口的映射实现将第一指令集通过第一端口和第二端口发送至第二终端上。
61.举例而言,第二终端使用安卓平台调试桥,通过安卓平台调试桥实现对第一终端的操作和管理,如安装软件、查看设备软硬件参数、系统升级、运行shell命令等,在第一终端启动超文本传输协议(hyper text transfer protocol,简称为http)服务器,从而向第二终端暴露第一端口,进而实现将第一终端的第一端口映射至第二终端的第二端口上。获取与所述多个第一目标函数对应的第一指令集,通过第一端口和第二端口的映射实现将第一指令集通过第一端口和第二端口发送至第二终端上。
62.作为一种可选的实施方式,步骤s206,在第一指令集中屏蔽目标画面中目标对象对应的第一目标指令,包括:获取由第二终端第一指令集中屏蔽的第一目标指令。
63.在该实施例中,在第二终端可以通过对第一目标指令进行标记,将标记的第一目标指令映射至第一终端,若第一终端运行到存在屏蔽标记的第一目标指令时,则可以直接
跳过该第一目标指令的执行。
64.作为一种可选的实施方式,启动第一目标指令,包括:获取由第二终端启动的第一目标指令。
65.在该实施例中,启动第一目标指令,当第二终端接收到对第一目标指令的启动指令时,可以通过去掉第一目标指令屏蔽标识,将去掉该屏蔽标识的第一目标指令映射至第一终端,若第一终端运行到去掉屏蔽标记的第一目标指令时,则可以执行该第一目标指令。
66.作为一种可选的实施方式,该方法还包括:第一指令集中的指令为开放式图形库中的组调试指令。
67.在该实施例中,第一指令集中的指令为开放式图形库中的组调试指令,第一指令集可以用debuggroups表示,用来绘制从简单的图形比特到复杂的三维景象。
68.在该实施例中,基于钩子函数将多个第一目标函数加载至目标应用中;获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染;在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。也就是说,本技术基于钩子函数,在目标应用运行时,加载基于钩子函数的多个第一目标函数,得到第一指令集,通过在不渲染目标画面的目标对象时的第二指令集和包括渲染目标对象的第一指令集,来确定渲染目标对象所用的时长,从而达到了确定渲染时长的技术效果,解决了难以确定渲染时长的技术问题。
69.下面结合优选的实施方式对本发明实施例的技术方案进行进一步的举例介绍。
70.面前市面上的游戏应用,大部分安卓游戏客户端是通过开放式图形库来渲染画面的。在测试游戏性能的过程中,如果发现游戏瓶颈在图形应用处理器侧,后续想要更深入的定位具体是哪些绘制导致渲染时长增加是相对困难的。如果可以实时的屏蔽/启用某些绘制,对比帧耗时的变化,会为游戏渲染性能分析中寻找瓶颈提供便利。
71.现在实时的屏蔽/启用某些绘制的方法有1种方式,如图3所示,图3是根据相关技术中的一种屏蔽/启用某些绘制方法的示意图,游戏客户端在发布前实现对应的接口,用户通过游戏管理指令或其他方式调用对应的接口,实现对某个绘制或某个后处理的屏蔽/启用。
72.但是,该方法无法对没有实现的游戏客户端进行分析,需要游戏客户端事先实现对应的接口,因此对于用户来讲,需要学习不同游戏客户端中调试接口的使用,同时,因为安卓中游戏进程是一个独立的进程。其他进程如果想修改游戏应用进程里的内存是需要最高权限的,从而存在难以确定渲染时长的问题。
73.然而,在本技术中通过钩住部分开放图形库的应用层,从而不需要最高权限就可以把自己写的调试层加载到游戏应用的进程空间中,记录并展示当前画面中的组调试指令,在用户选择屏蔽某个组调试指令中的绘制时,程序判断画图指令与绑定缓冲区域指令是否位于该组调试指令的范围中,对于在用户选择的组调试指令中的画图指令,在执行过程中,直接返回,而不把指令转发到驱动中真正执行,从而实现应用程序无需提前实现调试某个模型或后处理通过对应的接口,也可以在无法获得安卓超级使用者权限的条件下使用,同时通过实时对画面绘制进行干涉,对比前后帧率变化,进而解决难以确定渲染时长的
问题。
74.下面对该实施例的上述方法进行进一步介绍。
75.本发明使用钩子函数的方式,以黑盒的形式劫持游戏应用调用开放式图形库中函数的过程,监控当前画面绘制中的交换缓冲区函数(eglswapbuffers)、调用组调试指令函数(glpushdebuggroup)、停止调用组调试指令函数(glpopdebuggroup)、绑定缓冲区函数(glbindframebuffer)和画图函数(gldraw*)的调用,并根据用户选择组调试指令对某些绑定缓冲区函数(glbindframebuffer)或画图函数(gldraw*)命令进行屏蔽/启用。实际应用场景案例。
76.举例而言,游戏里有一棵树和一个房子,画树前,如果应用层调用组调试指令函数中的画树指令(glpushdebuggroup('tree')),调用画图函数画树(gldraw*)画完了,调用停止调用组调试指令函数中的画树指令(glpopdebuggroup('tree')),从而停止画树。
77.如果钩住了这三个应用层即可根据组调试指令组中的内容判断检测当前是不是在画树,就可以不实际画出树,再去观察帧率,对比前后差值,就可测算画这颗树耗了多久时间。
78.图4是根据本发明其中一实施例的一种渲染时长的确定方法的示意图。如图4所示,在该实施例中,可以使用钩子函数修改函数指针,用自定义的交换缓冲函数、调用组调试指令函数、停止调用组调试指令函数、绑定缓冲区函数和画图函数接管开放图形库应用中的交换缓冲函数、调用组调试指令函数、停止调用组调试指令函数、绑定缓冲区函数和画图函数调用。
79.在钩子函数成功后,函数的调用过程如下,包括:游戏应用的动态链接库、数据收集层的动态链接库和开放式图形库驱动的动态链接库,其中,游戏应用的动态链接库用于存放第二目标函数;数据收集层的动态链接库用于存放第一目标函数;开放式图形库驱动的动态链接库用于存放第三目标函数。
80.可选地,在数据收集层的动态链接库被加载时,启动网络插座(tcp socket),电脑端使用命令安卓平台调试桥将传输控制协议端口43556做端口映射,将安卓端的43556端口映射到电脑的43556端口上。
81.该实施例可以将自定义调用组调试指令函数中的参数,使用存放组调试指令的容器(vector debuggroups)进行存储,并通过传输控制协议端口/组调试指令呈现在电脑客户端中,用户可以选择其中的某个组调试指令行屏蔽/启用。
82.该实施例在传输控制协议端口/组调试指令/《命名》/禁止接收到用户对某个组调试指令进行屏蔽时,将该组调试指令加入封锁存放组调试指令的容器(vector blockeddebuggroups)中。
83.该实施例在传输控制协议端口/组调试指令/《命名》/启用接收到用户对某个组调试指令进行启用时,将该组调试指令从封锁存放组调试指令的容器中移除。
84.可选地,使用当前组调试指令栈(stack currentdebuggroups)维护当前组调试指令的状态,在自定义的调用组调试指令函数(my_glpushdebuggroup)被调用时,将参数传递到当前组调试指令中,在自定义的停止调用组调试指令函数(my_glpopdebuggroup)被调用时,擦除当前组调试指令顶部的元素。
85.在自定义的绑定缓冲区函数(my_glbindframebuffer)与自定义的画图函数(my_
gldraw*)被调用时,判断封锁的组调试指令(blockeddebuggroups)中的元素与当前组调试指令(currentdebuggroups)中的元素有交集,若有,则屏蔽游戏调用的目标指令;若无,则将指令传递到真实的开放图形库的应用层中。
86.该实施例通过上述方法可以使得用户在电脑端观察屏蔽/启用某个组调试指令中的绘制是否会有帧率上的收益。
87.该实施例通过上面的技术方案,解决了目前瓶颈在图形应用处理器端的应用难以定位具体引起瓶颈的绘制的问题,这样用户可以简单的屏蔽/启用某个组调试指令中的绘制,通过对比前后的帧率变化即可算出该绘制在图形应用处理器端的耗时,确定该绘制是否为渲染瓶颈,从而达到了确定渲染时长的技术效果,进而解决了难以确定渲染时长的技术问题。
88.图5是根据本发明其中一实施例的另一种渲染时长的确定方法的流程图。如图5所示,具体包含以下几个步骤。
89.步骤s501,在电脑端使用安卓平台调试桥工具,使用命令以调试模式启动被测游戏客户端,并使其加载注入层。
90.步骤s502,在安卓端启动传输控制协议服务器用于向电脑端暴露接口,默认端口为43556。
91.步骤s503,使用钩子函数修改函数指针,自定义的交换缓冲函数、调用组调试指令函数、停止调用组调试指令函数、绑定缓冲区函数和画图函数接管开放图形库应用中的交换缓冲函数、调用组调试指令函数、停止调用组调试指令函数、绑定缓冲区函数和画图函数调用。
92.步骤s504,使用当前组调试指令栈维护组调试指令的状态,包括:在自定义的停止调用组调试指令函数被调用时,将参数传递到当前组调试指令与存放组调试指令的容器中;在自定义的启用调用组调试指令函数被调用时,调用当前组调试指令顶部的元素;在自定义的交换缓冲区函数被调用时,将存放组调试指令的容器中的内容拷贝到存放所有组调试指令的容器(vector full debuggroups)中,并对当前组调试指令栈与存放组调试指令的容器进行清理。
93.步骤s505,在电脑端使用安卓平台调试桥工具,使用命令(adb forward tcp:43556tcp:43556),在电脑上做端口映射,将安卓端的43556端口映射到电脑端的43556端口上。
94.步骤s506,在电脑端通传输控制协议服务器接口/组调试指令将存放所有组调试指令的容器列表呈现在电脑客户端中。
95.步骤s507,在电脑端通过传输控制协议端口/组调试指令/《命名》/禁止,对某个组调试指令进行屏蔽。
96.步骤s508,在安卓端端将该组调试指令加入封锁存放组调试指令的容器中,在自定义的绑定缓冲区函数与自定义的画图函数被调用时,判断封锁存放组调试指令的容器中的元素与当前组调试指令的容器中的元素有交集,若有,则屏蔽游戏调用的目标指令;若无,将指令传递到真实的开放图形库的应用层中。
97.步骤s509,在传输控制协议端口/组调试指令/《命名》/启用接收到用户对某个组调试指令行启用时,将该组调试指令从封锁存放组调试指令的容器中移除。
98.步骤s510,在安卓端将该组调试指令从封锁存放组调试指令中移除。
99.该实施例,通过使用钩子函数,在游戏应用调用开放式图形库函数时,监控/修改当前画面绘制中的部分函数的调用,并根据用户选择的组调试指令对某些指令进行屏蔽/启用,通过屏蔽/启用排除故障中的绘制,对比前后的帧率变化即可算出该绘制在处理器端的耗时,确定该绘制是否为渲染瓶颈,从而实现快速确认渲染瓶颈位置技术效果,解决了渲染瓶颈位置难以确认的技术问题。
100.本发明实施例还提供了一种渲染时长的确定装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“单元”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
101.图6是根据本发明实施例的一种渲染时长的确定装置的结构框图。如图6所示,该渲染时长的确定装置600可以包括:加载单元601、获取单元602、屏蔽单元603和确定单元604。
102.加载单元601,用于基于钩子函数将多个第一目标函数加载至目标应用中。
103.获取单元602,用于获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染。
104.屏蔽单元603,用于在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染。
105.确定单元604,用于基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。
106.在该实施例中,基于钩子函数将多个第一目标函数加载至目标应用中;获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染;在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。也就是说,本技术基于钩子函数,在目标应用运行时,加载基于钩子函数的多个第一目标函数,得到第一指令集,通过在不渲染目标画面的目标对象时的第二指令集和包括渲染目标对象的第一指令集,来确定渲染目标对象所用的时长,从而达到了确定渲染时长的技术效果,解决了难以确定渲染时长的技术问题。
107.需要说明的是,上述各个单元是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述单元均位于同一处理器中;或者,上述各个单元以任意组合的形式分别位于不同的处理器中。
108.本发明的实施例还提供了一种非易失性存储介质,该非易失性存储介质中存储有计算机程序,其中,计算机程序被设置为被处理器运行时执行本发明实施例的渲染时长的确定方法。
109.可选地,在本实施例中,上述非易失性存储介质可以被设置为存储用于执行以下步骤的计算机程序:
110.s1,基于钩子函数将多个第一目标函数加载至目标应用中;
111.s2,获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于
通过对应的第一目标函数对目标应用的目标画面进行渲染;
112.s3,在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;
113.s4,基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。
114.可选地,在本实施例中,上述非易失性存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
115.根据本发明其中一实施例,还提供了一种处理器。该处理器用于运行程序,处理器用于运行程序,其中,程序被设置为被处理器运行时执行本发明实施例的渲染时长的确定方法。
116.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
117.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
118.可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
119.s1,基于钩子函数将多个第一目标函数加载至目标应用中;
120.s2,获取与多个第一目标函数对应的第一指令集,其中,第一指令集中的指令用于通过对应的第一目标函数对目标应用的目标画面进行渲染;
121.s3,在第一指令集中屏蔽第一目标指令,得到第二指令集,其中,第一目标指令用于通过对应的第一目标函数对目标画面中目标对象进行渲染;
122.s4,基于第一指令集和第二指令集确定目标渲染时长,其中,目标渲染时长为渲染目标对象所用的时长。
123.可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
124.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
125.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
126.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
127.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
128.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
129.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
130.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献