CN111831284A - 渲染调试方法、装置及设备 - Google Patents

渲染调试方法、装置及设备 Download PDF

Info

Publication number
CN111831284A
CN111831284A CN202010741977.4A CN202010741977A CN111831284A CN 111831284 A CN111831284 A CN 111831284A CN 202010741977 A CN202010741977 A CN 202010741977A CN 111831284 A CN111831284 A CN 111831284A
Authority
CN
China
Prior art keywords
rendering
function
debugging
interface
function pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010741977.4A
Other languages
English (en)
Other versions
CN111831284B (zh
Inventor
钱康来
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202010741977.4A priority Critical patent/CN111831284B/zh
Publication of CN111831284A publication Critical patent/CN111831284A/zh
Application granted granted Critical
Publication of CN111831284B publication Critical patent/CN111831284B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例提供了一种渲染调试方法、装置及设备,所述方法包括接收渲染请求,其中,渲染请求中携带渲染标识,根据渲染请求获取渲染标识对应的第一函数指针,其中,第一函数指针为自定义接口获取函数对应的函数指针,根据第一函数指针来获取渲染标识对应的渲染代码信息,并根据渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在游戏场景异常渲染时,在游戏应用程序内部进行渲染效果的调试,其中,渲染代码信息为自定义接口获取函数的函数体对应的代码信息。减少了跨应用程序调用时系统的各种限制,提高了渲染过程中问题定位的准确性,进而提高了图像渲染异常的调试效果。

Description

渲染调试方法、装置及设备
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种渲染调试方法、装置及设备。
背景技术
随着互联网技术的发展,游戏由于其丰富的娱乐性能越来越受到用户的欢迎。在游戏启动时,需要先进行渲染,来显示与游戏相关的游戏场景,渲染完成之后,用户才可以根据渲染结果进行相应的触控操作。
对于游戏而言,渲染的主要过程为输入游戏数据,然后再以可视化图像的形式输出游戏数据。输入的游戏数据包括但不限于:游戏应用的模型的网格数据、场景几何信息、模型的材质信息以及场景光照信息等。然而,由于不同终端设备在操作系统、硬件芯片、驱动程序等环境上的差异,即使输入的游戏数据相同,也可能得到不同的图像输出结果。
现有技术中,当在渲染过程中,输入相同的游戏数据,而得到不同的图像输出结果时,可以使用通用工具从渲染API(Application Program Interface,应用程序接口)级别进行调试,来定位渲染过程中出现的问题。然而,现有通用工具的调试策略通常是通过应用程序A(通用工具)去劫持应用程序B(游戏应用程序)的方式来进行调试的,该种调试方式需要跨应用程序进行调用,对于终端设备上部署的系统来说,为了提高系统的安全性,跨应用程序进行调用的方式会被认定为是不安全的操作,在调试过程中,会受到各种限制,影响了渲染过程中问题的定位,进而影响了图像渲染的调试效果。
发明内容
本发明实施例提供一种渲染调试方法、装置及设备,以提高渲染过程中问题定位的准确性,进而提高了图像渲染异常的调试效果。
第一方面,本发明实施例提供一种渲染调试方法,包括:接收渲染请求,其中,所述渲染请求中携带渲染标识;根据所述渲染请求获取所述渲染标识对应的第一函数指针;根据所述第一函数指针来获取所述渲染标识对应的渲染代码信息,并根据所述渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在所述游戏场景异常渲染时,在所述游戏应用程序内部进行渲染效果的调试,其中,所述渲染代码信息为所述自定义接口获取函数的函数体对应的代码信息。
可选的,所述渲染标识对应的渲染代码信息包括原接口获取函数对应的第二函数指针和通用工具对应的调试代码数据,其中,所述原接口获取函数用来获取渲染接口,所述根据所述第一函数指针来获取所述渲染标识对应的渲染代码信息,并根据所述渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在所述游戏场景异常渲染时,在所述游戏应用程序内部进行渲染效果的调试,包括:根据所述第一函数指针来获取所述第二函数指针和所述通用工具对应的调试代码数据;根据所述第二函数指针从系统库中获取渲染函数接口,并根据所述渲染函数接口对所述游戏场景进行渲染;若所述游戏场景在渲染过程中出现异常时,则将渲染后的游戏场景发送至所述游戏应用程序内部的所述通用工具对应的调试代码数据进行渲染效果的调试,确定渲染问题信息。
可选的,所述方法还包括:将所述渲染问题信息在显示终端进行显示。
可选的,在所述接收渲染请求之前,还包括:在确定所述游戏应用程序开始启动时,从共享内存区域中获取所述原接口获取函数对应的代码数据;从所述原接口获取函数对应的代码数据中获取所述第二函数指针;将所述第二函数指针和所述通用工具对应的调试代码数据的存储位置进行关联,得到所述渲染代码信息;修改所述第二函数指针,得到指向所述渲染代码信息的所述第一函数指针。
可选的,所述在确定所述游戏应用程序开始启动时,从共享内存区域中获取所述原接口获取函数对应的代码数据,包括:在确定所述游戏应用程序开始启动时,从共享内存区域中获取动态链接库dlopen函数和查询动态链接库dlsym函数对应的代码数据。
可选的,还包括:若根据所述第二函数指针从系统库中获取的函数接口为非渲染函数接口,则将获取的所述非渲染函数接口直接返回至所述游戏应用程序进行调用。
可选的,所述确定所述游戏应用程序开始启动包括:在检测到onCreate函数调用时,则确定所述游戏应用程序开始启动。
第二方面,本发明实施例提供一种渲染调试装置,包括:接收模块,用于接收渲染请求,其中,所述渲染请求中携带渲染标识;处理模块,用于根据所述渲染请求获取所述渲染标识对应的第一函数指针,其中,所述第一函数指针为自定义接口获取函数对应的函数指针;所述处理模块,还用于根据所述第一函数指针来获取所述渲染标识对应的渲染代码信息,并根据所述渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在所述游戏场景异常渲染时,在所述游戏应用程序内部进行渲染效果的调试,其中,所述渲染代码信息为所述自定义接口获取函数的函数体对应的代码信息。
第三方面,本发明实施例提供一种渲染调试设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的渲染调试方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的渲染调试方法。
本发明实施例提供了一种渲染调试方法、装置及设备,采用上述方案后,能在接收到渲染请求后,根据渲染请求中携带的渲染标识获取自定义接口获取函数对应的函数指针,并根据自定义接口获取函数对应的函数指针来获取渲染标识对应的渲染代码信息,再根据获取的渲染代码信息实现对游戏应用程序对应的游戏场景进行渲染,并在游戏场景异常渲染时,在游戏应用程序内部进行渲染效果的调试,无需再额外调用其他应用程序来对渲染效果进行调试,减少了跨应用程序调用时系统的各种限制,提高了渲染过程中问题定位的准确性,进而提高了图像渲染异常的调试效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的渲染调试方法的应用场景示意图;
图2为本发明实施例提供的渲染调试方法的流程示意图;
图3为本发明另一实施例提供的渲染调试方法的流程示意图;
图4为本发明实施例提供的渲染原理应用示意图;
图5为本发明实施例提供的渲染调试装置的结构示意图;
图6为本发明实施例提供的渲染调试设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例还能够包括除了图示或描述的那些实例以外的其他顺序实例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
对于游戏而言,渲染的主要过程为输入游戏数据,然后再以可视化图像的形式输出游戏数据。输入的游戏数据包括但不限于:游戏应用的模型的网格数据、场景几何信息、模型的材质信息以及场景光照信息等。其中,场景几何信息可以包括模型的位置、旋转角度、缩放以及相机参数等。模型的材质信息可以包括贴图或参数等。然而,由于不同终端设备在操作系统、硬件芯片、驱动程序等环境上有所差异,即使输入的游戏数据相同,也可能得到不同的图像输出结果。例如,图1为本发明实施例提供的渲染调试方法的应用场景示意图,在该示意图中,正常渲染的时候虚拟人物为黑色,背景色以灰度显示。如图1中a所示,为XXX游戏应用程序中游戏场景正常渲染后的示意图,在该实例中,当游戏场景可以正常显示时,虚拟人物以黑色显示,而背景色仍以灰度显示。如图1中b所示,为XXX游戏应用程序中游戏场景非正常渲染后的示意图,在该实例中,图像在渲染过程中,由于终端设备的类型或型号等的差异,可能会出现虚拟人物可以正常渲染,即虚拟人物可以以黑色显示,但背景色在渲染时不能正常显示,仅以白色背景显示的情况。
当出现上述情况时,可以使用通用工具从渲染API(Application ProgramInterface,应用程序接口)级别进行调试,来定位渲染过程中出现的问题。然而,现有通用工具的调试策略通常是通过应用程序A(通用工具)去劫持应用程序B(游戏应用程序)的方式来进行调试的,然而,该种调试方式需要跨应用程序进行调用,对于终端设备上部署的系统来说,跨应用程序进行调用的方式是不安全的操作,在调试过程中,会受到各种限制,还有可能出现通用工具无法与应用程序进行连接,进而无法实现调试的情况,导致调试过程费时费力,影响了渲染过程中问题的定位,进而影响了图像渲染的调试效果。
基于上述问题,本申请提出了通过劫持并改变原接口获取函数的函数指针,将原接口获取函数的函数指针修改为指向自定义的既可以实现游戏场景渲染,又可以实现渲染调试的函数对应的函数指针,即通过游戏应用程序本身对自己内存的修改访问,实现了游戏场景的渲染和渲染调试,符合系统规范,减少了应用程序之间调用的各种限制,降低了调试难度,提高了渲染过程中问题定位的准确性,进而达到了提高图像异常渲染的调试效果的技术效果。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明实施例提供的渲染调试方法的流程示意图,本实施例的方法可以由终端设备执行,具体可以由终端设备上的操作系统来执行,其中,终端设备上的操作系统可以为安卓系统。如图2所示,本实施例的方法,可以包括:
S201:接收渲染请求,其中,渲染请求中携带渲染标识。
在本实施例中,游戏应用程序可以通过渲染的方式来显示游戏场景。在游戏应用程序需要渲染时,可以向终端设备上部署的操作系统发送渲染请求,终端设备上部署的操作系统可以接收到游戏应用程序发送的渲染请求。其中,游戏场景中可以包括虚拟对象、按键、背景、地形等。
此外,为了能准确获取自定义接口获取函数的相关数据,可以在渲染请求中携带渲染标识。其中,自定义接口获取函数的相关数据可以包括自定义接口获取函数的函数指针和自定义接口获取函数的函数体。具体的,函数指针为指向函数的指针,即内存里函数对应的代码的存放地址。函数体为实现函数功能的具体代码。
S202:根据渲染请求获取渲染标识对应的第一函数指针,其中,第一函数指针为自定义接口获取函数对应的函数指针。
S203:根据第一函数指针来获取渲染标识对应的渲染代码信息,并根据渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在游戏场景异常渲染时,在游戏应用程序内部进行渲染效果的调试,其中,渲染代码信息为自定义接口获取函数的函数体对应的代码信息。
在本实施例中,终端设备上部署的操作系统在接收到携带渲染标识的渲染请求时,可以根据渲染请求获取渲染标识对应的第一函数指针,以便后续根据获取的第一函数指针来获取与渲染标识匹配的渲染代码信息。其中,渲染代码信息为自定义接口获取函数的函数体对应的代码信息,即实现在游戏应用程序内部进行游戏场景的渲染与渲染效果的调试功能的具体代码。
采用上述方案后,能在接收到渲染请求后,根据渲染请求中携带的渲染标识获取自定义接口获取函数对应的函数指针,并根据自定义接口获取函数对应的函数指针来获取渲染标识对应的渲染代码信息,再根据获取的渲染代码信息实现对游戏应用程序对应的游戏场景进行渲染,并在游戏场景异常渲染时,在游戏应用程序内部进行渲染效果的调试,无需再额外调用其他应用程序来对渲染效果进行调试,减少了跨应用程序调用时系统的各种限制,提高了渲染过程中问题定位的准确性,进而提高了图像渲染异常的调试效果。
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
图3为本发明另一实施例提供的渲染调试方法的流程示意图,如图3所示,在该实施例中,渲染标识对应的渲染代码信息可以包括原接口获取函数对应的第二函数指针和通用工具对应的调试代码数据。其中,原接口获取函数用来获取渲染接口。获取的渲染接口为系统库中自带的渲染接口,可以采用系统库libc中的dlsym(dynamic library symbol,查询动态链接库)和dlopen(dynamic library open,打开动态链接库)来加载动态库,并获得渲染接口。
在渲染标识对应的渲染代码信息包括原接口获取函数对应的第二函数指针和通用工具对应的调试代码数据时,S203的具体实现方式,可以包括:
S301:根据第一函数指针来获取第二函数指针和通用工具对应的调试代码数据。
在本实施例中,通过第一函数指针可以获取第二函数指针和通用工具对应的调试代码数据。第一函数指针为自定义接口获取函数在内存中的存放地址。通过自定义接口获取函数可以实现在游戏应用程序内部进行游戏场景的渲染与渲染效果的调试。
其中,自定义接口获取函数的实现过程可以为:在确定游戏应用程序开始启动时,从共享内存区域中获取原接口获取函数对应的代码数据。从原接口获取函数对应的代码数据中获取第二函数指针。将第二函数指针和通用工具对应的调试代码数据的存储位置进行关联,得到渲染代码信息。修改第二函数指针,得到指向渲染代码信息的第一函数指针。
具体的,在确定游戏应用程序开始启动时,先从共享内存区域中获取原接口获取函数对应的代码数据。其中,原接口获取函数对应的代码数据包括原接口获取函数的函数指针和原接口获取函数的函数体。然后再从原接口获取函数对应的代码数据中获取原接口获取函数的函数指针,即第二函数指针。在获取到第二函数指针后,可以将第二函数指针和通用工具对应的调试代码数据的存储位置进行关联,并修改第二函数指针,得到指向渲染代码信息的第一函数指针。即将第二函数指针和通用工具对应的调试代码数据存储在一起,并设置好按照预设流程执行相应的代码数据,得到自定义接口获取函数。而自定义接口获取函数的存放地址即为第一函数指针。
其中,在检测到onCreate函数调用时,则可以确定游戏应用程序开始启动。
S302:根据第二函数指针从系统库中获取渲染函数接口,并根据渲染函数接口对游戏场景进行渲染。
S303:若游戏场景在渲染过程中出现异常时,则将渲染后的游戏场景发送至游戏应用程序内部的通用工具对应的调试代码数据进行渲染效果的调试,确定渲染问题信息。
在本实施例中,在设置好自定义接口获取函数之后,可以根据自定义接口获取函数的函数体的预设执行过程先根据第二函数指针从系统库中获取渲染函数接口,并根据渲染函数接口对游戏场景进行渲染,然后根据自定义接口获取函数的函数体的预设执行过程,在游戏场景渲染过程中出现异常时,将渲染后的游戏场景发送至通用工具对应的调试代码数据进行调试,确定渲染问题信息,通过在游戏应用程序内部渲染调试的方式,避免了终端设备上部署的操作系统对于跨应用调试方式的各种限制,提高了渲染过程中问题定位的准确性,进而提高了图像渲染异常的调试效果。其中,所述通用工具可以包括:NvidiaNSight、RenderDoc、Snapdragon Profiler、Mali Graphics Debugger,以及IntelGraphics Performance Analyzers。另外,渲染问题信息可以为渲染出现异常的具体原因,可以有一种或多种。
此外,所述方法还可以包括:将渲染问题信息在显示终端进行显示。
具体的,在确定出渲染问题信息时,可以将渲染问题信息在显示终端显示出来,使得管理人员可以及时根据渲染问题信息对渲染异常进行处理,提高了图像渲染的调试效果。
在另一个实施例中,在确定所述游戏应用程序开始启动时,从共享内存区域中获取所述原接口获取函数对应的代码数据,可以包括:
在确定游戏应用程序开始启动时,从共享内存区域中获取动态链接库dlopen函数和查询动态链接库dlsym函数对应的代码数据。
在另一个实施例中,所述方法还可以包括:若根据第二函数指针从系统库中获取的函数接口为非渲染函数接口,则将获取的非渲染函数接口直接返回至游戏应用程序进行调用。
具体的,在通过第二函数指针获取接口时,获取的接口可能是渲染接口,也可能不是渲染接口,若获取的接口为渲染接口,可以对渲染接口进行相关处理,以得到第一函数指针。若获取的接口为非渲染接口,则可以直接将非渲染接口返回至游戏应用程序进行调用即可。例如,非渲染接口可以为音效接口、测试接口、注册接口、登录接口等。
其中,可以通过接口的名称来直接判断接口的类型。例如,渲染接口的接口名称可以为glDrawElements。
图4为本发明实施例提供的渲染原理应用示意图,如图4中a所示,为现有的渲染原理应用示意图,在该实例中,渲染要使用渲染接口glDrawElements,现有的调用过程为:游戏应用程序先通过dlopen函数和dlsym函数从操作系统中获得渲染接口,游戏应用程序再通过调用渲染接口进行渲染,最后再通过其他的应用程序,即通用工具应用程序进行调试,确定渲染问题信息。具体的实现过程为:
void*lib=dlopen("libGLESv2.so",RTLD_NOW)//加载动态库
_glDrawElements=dlsym(lib,“glDrawElements”)//获取渲染接口
_glDrawElements(xx,xx,xx)//调用渲染接口
如图4中b所示,为改进后的渲染原理应用示意图,在该实例中,相当于加了一层中间层,游戏应用程序本身还是按照原来的逻辑在走,但是调用dlopen和dlsym的时候调用的不是操作系统版本的渲染接口,而是修改之后的函数,然后中间层再实现原来的流程,从操作系统版本的dlopen和dlsym获得真正的glDrawElements。因此,当游戏应用程序访问glDrawElements的时候,就会先经过修改后的glDrawElements,将渲染后的游戏场景保存下来,还可以直接通过中间层中的通用工具对应的程序代码数据对渲染后的游戏场景进行调试,确定渲染问题信息。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置,图5为本发明实施例提供的渲染调试装置的结构示意图,如图5所示,可以包括:
接收模块501,用于接收渲染请求,其中,渲染请求中携带渲染标识。
处理模块502,用于根据所述渲染请求获取所述渲染标识对应的第一函数指针,其中,所述第一函数指针为自定义接口获取函数对应的函数指针。
所述处理模块502,还用于根据所述第一函数指针来获取所述渲染标识对应的渲染代码信息,并根据所述渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在所述游戏场景异常渲染时,在所述游戏应用程序内部进行渲染效果的调试,其中,所述渲染代码信息为所述自定义接口获取函数的函数体对应的代码信息。
在一个具体实施方式中,所述渲染标识对应的渲染代码信息包括原接口获取函数对应的第二函数指针和通用工具对应的调试代码数据,其中,所述原接口获取函数用来获取渲染接口,所述处理模块,还用于:
根据所述第一函数指针来获取所述第二函数指针和所述通用工具对应的调试代码数据。
根据所述第二函数指针从系统库中获取渲染函数接口,并根据所述渲染函数接口对所述游戏场景进行渲染。
若所述游戏场景在渲染过程中出现异常时,则将渲染后的游戏场景发送至所述游戏应用程序内部的所述通用工具对应的调试代码数据进行渲染效果的调试,确定渲染问题信息。
在一个具体实施方式中,所述处理模块,还用于:
将所述渲染问题信息在显示终端进行显示。
在一个具体实施方式中,所述处理模块,还用于:
在确定所述游戏应用程序开始启动时,从共享内存区域中获取所述原接口获取函数对应的代码数据。
从所述原接口获取函数对应的代码数据中获取所述第二函数指针。
将所述第二函数指针和所述通用工具对应的调试代码数据的存储位置进行关联,得到所述渲染代码信息。
修改所述第二函数指针,得到指向所述渲染代码信息的所述第一函数指针。
在一个具体实施方式中,所述处理模块,还用于:
在确定所述游戏应用程序开始启动时,从共享内存区域中获取动态链接库dlopen函数和查询动态链接库dlsym函数对应的代码数据。
在一个具体实施方式中,所述处理模块,还用于:
若根据所述第二函数指针从系统库中获取的函数接口为非渲染函数接口,则将获取的所述非渲染函数接口直接返回至所述游戏应用程序进行调用。
在一个具体实施方式中,所述处理模块,还用于:
在检测到onCreate函数调用时,则确定所述游戏应用程序开始启动。
本发明实施例提供的装置,可以实现上述如图2所示的实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图6为本发明实施例提供的渲染调试设备的硬件结构示意图。如图6所示,本实施例提供的设备600包括:至少一个处理器601和存储器602。其中,处理器601、存储器602通过总线603连接。
在具体实现过程中,至少一个处理器601执行所述存储器602存储的计算机执行指令,使得至少一个处理器601执行上述方法实施例中的方法。
处理器601的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图6所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述方法实施例的渲染调试方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种渲染调试方法,其特征在于,包括:
接收渲染请求,其中,所述渲染请求中携带渲染标识;
根据所述渲染请求获取所述渲染标识对应的第一函数指针,其中,所述第一函数指针为自定义接口获取函数对应的函数指针;
根据所述第一函数指针来获取所述渲染标识对应的渲染代码信息,并根据所述渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在所述游戏场景异常渲染时,在所述游戏应用程序内部进行渲染效果的调试,其中,所述渲染代码信息为所述自定义接口获取函数的函数体对应的代码信息。
2.根据权利要求1所述的方法,其特征在于,所述渲染标识对应的渲染代码信息包括原接口获取函数对应的第二函数指针和通用工具对应的调试代码数据,其中,所述原接口获取函数用来获取渲染接口,
所述根据所述第一函数指针来获取所述渲染标识对应的渲染代码信息,并根据所述渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在所述游戏场景异常渲染时,在所述游戏应用程序内部进行渲染效果的调试,包括:
根据所述第一函数指针来获取所述第二函数指针和所述通用工具对应的调试代码数据;
根据所述第二函数指针从系统库中获取渲染函数接口,并根据所述渲染函数接口对所述游戏场景进行渲染;
若所述游戏场景在渲染过程中出现异常时,则将渲染后的游戏场景发送至所述游戏应用程序内部的所述通用工具对应的调试代码数据进行渲染效果的调试,确定渲染问题信息。
3.根据权利要求2所述的方法,其特征在于,还包括:
将所述渲染问题信息在显示终端进行显示。
4.根据权利要求2所述的方法,其特征在于,在所述接收渲染请求之前,还包括:
在确定所述游戏应用程序开始启动时,从共享内存区域中获取所述原接口获取函数对应的代码数据;
从所述原接口获取函数对应的代码数据中获取所述第二函数指针;
将所述第二函数指针和所述通用工具对应的调试代码数据的存储位置进行关联,得到所述渲染代码信息;
修改所述第二函数指针,得到指向所述渲染代码信息的所述第一函数指针。
5.根据权利要求4所述的方法,其特征在于,所述在确定所述游戏应用程序开始启动时,从共享内存区域中获取所述原接口获取函数对应的代码数据,包括:
在确定所述游戏应用程序开始启动时,从共享内存区域中获取动态链接库dlopen函数和查询动态链接库dlsym函数对应的代码数据。
6.根据权利要求2所述的方法,其特征在于,还包括:
若根据所述第二函数指针从系统库中获取的函数接口为非渲染函数接口,则将获取的所述非渲染函数接口直接返回至所述游戏应用程序进行调用。
7.根据权利要求4所述的方法,其特征在于,所述确定所述游戏应用程序开始启动包括:
在检测到onCreate函数调用时,则确定所述游戏应用程序开始启动。
8.一种渲染调试装置,其特征在于,包括:
接收模块,用于接收渲染请求,其中,所述渲染请求中携带渲染标识;
处理模块,用于根据所述渲染请求获取所述渲染标识对应的第一函数指针,其中,所述第一函数指针为自定义接口获取函数对应的函数指针;
所述处理模块,还用于根据所述第一函数指针来获取所述渲染标识对应的渲染代码信息,并根据所述渲染代码信息对游戏应用程序对应的游戏场景进行渲染,并在所述游戏场景异常渲染时,在所述游戏应用程序内部进行渲染效果的调试,其中,所述渲染代码信息为所述自定义接口获取函数的函数体对应的代码信息。
9.一种渲染调试设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的渲染调试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的渲染调试方法。
CN202010741977.4A 2020-07-29 2020-07-29 渲染调试方法、装置及设备 Active CN111831284B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010741977.4A CN111831284B (zh) 2020-07-29 2020-07-29 渲染调试方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010741977.4A CN111831284B (zh) 2020-07-29 2020-07-29 渲染调试方法、装置及设备

Publications (2)

Publication Number Publication Date
CN111831284A true CN111831284A (zh) 2020-10-27
CN111831284B CN111831284B (zh) 2023-08-08

Family

ID=72919965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010741977.4A Active CN111831284B (zh) 2020-07-29 2020-07-29 渲染调试方法、装置及设备

Country Status (1)

Country Link
CN (1) CN111831284B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050216895A1 (en) * 2004-03-23 2005-09-29 Tran Hieu T Method and apparatus for remote debugging of kernel and application software
WO2009093220A2 (en) * 2008-01-25 2009-07-30 Nxp B.V. Sal debugging
US20100211933A1 (en) * 2009-02-19 2010-08-19 Nvidia Corporation Debugging and perfomance analysis of applications
WO2010141612A1 (en) * 2009-06-02 2010-12-09 Qualcomm Incorporated Displaying a visual representation of performance metrics for rendered graphics elements
CN103838669A (zh) * 2012-11-26 2014-06-04 辉达公司 用于本地调试图形程序的系统、方法和计算机程序产品
CN104021081A (zh) * 2014-06-16 2014-09-03 贝壳网际(北京)安全技术有限公司 一种针对浏览器的调试方法及装置
US9645910B1 (en) * 2015-03-12 2017-05-09 Amazon Technologies, Inc. Cross platform mobile HTML debugging
US10013707B1 (en) * 2014-01-21 2018-07-03 Sprint Communications Company L.P. Address modification for advertisement mediation
CN108654088A (zh) * 2018-04-13 2018-10-16 腾讯科技(深圳)有限公司 程序调试方法和装置、存储介质及电子装置
CN108717354A (zh) * 2018-05-17 2018-10-30 广州多益网络股份有限公司 手机游戏渲染数据的采集方法、装置及存储设备
CN110287106A (zh) * 2019-05-24 2019-09-27 北京达佳互联信息技术有限公司 着色器代码的调试方法、装置、电子设备及存储介质
WO2019237821A1 (zh) * 2018-06-15 2019-12-19 腾讯科技(深圳)有限公司 虚拟场景的场景图像传输方法、装置、计算机设备及计算机可读存储介质
CN111367805A (zh) * 2020-03-05 2020-07-03 中国银行股份有限公司 开发调试方法及装置
CN111459827A (zh) * 2020-04-07 2020-07-28 长沙景嘉微电子股份有限公司 一种跨平台调试shell的实现方法、装置和计算机

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050216895A1 (en) * 2004-03-23 2005-09-29 Tran Hieu T Method and apparatus for remote debugging of kernel and application software
WO2009093220A2 (en) * 2008-01-25 2009-07-30 Nxp B.V. Sal debugging
US20100211933A1 (en) * 2009-02-19 2010-08-19 Nvidia Corporation Debugging and perfomance analysis of applications
WO2010141612A1 (en) * 2009-06-02 2010-12-09 Qualcomm Incorporated Displaying a visual representation of performance metrics for rendered graphics elements
CN103838669A (zh) * 2012-11-26 2014-06-04 辉达公司 用于本地调试图形程序的系统、方法和计算机程序产品
US10013707B1 (en) * 2014-01-21 2018-07-03 Sprint Communications Company L.P. Address modification for advertisement mediation
CN104021081A (zh) * 2014-06-16 2014-09-03 贝壳网际(北京)安全技术有限公司 一种针对浏览器的调试方法及装置
US9645910B1 (en) * 2015-03-12 2017-05-09 Amazon Technologies, Inc. Cross platform mobile HTML debugging
CN108654088A (zh) * 2018-04-13 2018-10-16 腾讯科技(深圳)有限公司 程序调试方法和装置、存储介质及电子装置
CN108717354A (zh) * 2018-05-17 2018-10-30 广州多益网络股份有限公司 手机游戏渲染数据的采集方法、装置及存储设备
WO2019237821A1 (zh) * 2018-06-15 2019-12-19 腾讯科技(深圳)有限公司 虚拟场景的场景图像传输方法、装置、计算机设备及计算机可读存储介质
CN110287106A (zh) * 2019-05-24 2019-09-27 北京达佳互联信息技术有限公司 着色器代码的调试方法、装置、电子设备及存储介质
CN111367805A (zh) * 2020-03-05 2020-07-03 中国银行股份有限公司 开发调试方法及装置
CN111459827A (zh) * 2020-04-07 2020-07-28 长沙景嘉微电子股份有限公司 一种跨平台调试shell的实现方法、装置和计算机

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LYSHARK: "FPS游戏:实现D3D Hook劫持透视", Retrieved from the Internet <URL:《https://www.cnblogs.com/LyShark/p/11670487.html》> *

Also Published As

Publication number Publication date
CN111831284B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN108765534B (zh) 一种图像渲染方法、装置、设备及存储介质
CN109144665B (zh) 一种模拟器识别方法、识别设备及计算机可读介质
CN108765539B (zh) 基于OpenGLES的图像渲染方法、装置、设备及存储介质
CN112783761A (zh) 一种应用程序的冷启动时长测试方法、装置及系统
CN108614767A (zh) 一种远程调试方法及装置
CN110320378B (zh) 质控测试申请方法、装置、设备及计算机可读存储介质
CN111858296A (zh) 接口测试方法、装置、设备和存储介质
CN107885653B (zh) 一种数据处理系统、方法及装置
CN111444103A (zh) 一种Web页面自动化测试方法及相关设备
CN114676040A (zh) 一种测试覆盖率验证方法、装置及存储介质
CN109558313B (zh) 构建异常测试场景的方法及装置
CN113656107A (zh) 移动应用的加载方法、装置及电子设备
CN109902001B (zh) 对未初始化变量的检测方法及终端设备
CN110688198B (zh) 系统调用方法、装置和电子设备
CN111831284B (zh) 渲染调试方法、装置及设备
CN112084386A (zh) 一种云托管客户信息管理方法、装置及服务器
CN113656322B (zh) 数据处理方法、装置、电子设备及计算机存储介质
CN110515834B (zh) 接口测试方法、装置、移动终端及存储介质
CN112541313A (zh) 为逻辑分析态配置触发表达式的方法和装置
CN113656286A (zh) 软件测试方法、装置、电子设备及可读存储介质
CN113760701A (zh) 测试处理方法及装置
CN114385524A (zh) 嵌入式固件仿真系统及其方法、装置和电子设备
CN112612550A (zh) 一种文件配置方法及装置
CN112190933A (zh) 一种游戏场景中的特效处理方法和装置
CN108170463B (zh) 一种安卓设备的出厂设置方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant