本说明书实施例涉及计算机,具体地,涉及图形渲染方法及装置。
背景技术:
1、随着5g时代的到来,低延迟高带宽的网络让运行在云服务器上的虚拟终端(如虚拟手机等)的实用化逐渐变得可能。目前,虚拟终端上能运行操作系统和涉及图形渲染的应用程序,用户能使用实体终端访问该应用程序,该应用程序能借助高速低延迟的网络将云端渲染的图像传输到该实体终端上。
2、迫切需要一种合理、可靠的方案,能够简化云端渲染流程,降低云服务器的资源成本。
技术实现思路
1、本说明书实施例提供了图形渲染方案,能够简化云端渲染流程,降低云服务器的资源成本。
2、第一方面,本说明书实施例提供了一种图形渲染方法,由运行有虚拟终端的云服务器执行,所述虚拟终端中安装有目标应用,所述方法包括:在用户使用包含图形处理器的实体终端访问所述目标应用的过程中,截获所述目标应用调用图形渲染接口的第一调用信息,其中包括第一渲染指令和相关的第一数据;向所述实体终端发送所述第一调用信息,以使得所述实体终端利用所述图形处理器根据所述第一数据执行所述第一渲染指令。
3、在一些实施例中,所述向所述实体终端发送所述第一调用信息,包括:对所述第一数据进行压缩处理,得到压缩结果;向所述实体终端发送所述第一渲染指令和所述压缩结果。
4、在一些实施例中,所述云服务器和所述实体终端缓存有对应于同一句柄的历史顶点数据,所述第一数据包括对应于所述同一句柄的更新顶点数据;所述对所述第一数据进行压缩处理,得到压缩结果,包括:对所述历史顶点数据和所述更新顶点数据进行异或运算,得到运算结果;对所述运算结果进行压缩处理,得到第一压缩结果。
5、在一些实施例中,所述对所述运算结果进行压缩处理,包括:对于所述运算结果中由连续的多个相同字节形成的字节流,使用目标标记替换所述字节流中除起始字节以外的其他所有字节;其中,所述目标标记包括所述起始字节在所述运算结果中所处的位置和所述字节流的长度。
6、在一些实施例中,所述第一数据包括纹理数据;所述对所述第一数据进行压缩处理,得到压缩结果,包括:采用无损图像压缩算法对所述纹理数据进行压缩处理,得到第二压缩结果。
7、在一些实施例中,所述第一数据包括纹理数据;所述方法还包括:对所述纹理数据进行哈希计算,得到哈希值;确定本地是否缓存有所述哈希值;所述向所述实体终端发送所述第一调用信息,包括:响应于确定本地未缓存所述哈希值,在本地缓存所述哈希值,并向所述实体终端发送所述第一调用信息和所述哈希值,以使得所述实体终端对所述哈希值和所述纹理数据进行关联缓存。
8、在一些实施例中,所述方法还包括:响应于确定本地缓存有所述哈希值,向所述实体终端发送所述第一渲染指令和所述哈希值,所述哈希值用于所述实体终端获取其缓存的所述纹理数据。
9、在一些实施例中,所述方法还包括:利用预设的指令识别策略,确定所述第一渲染指令是否为可被异步化执行的渲染指令;其中,所述指令识别策略包括针对可被异步化执行的渲染指令的描述信息;所述向所述实体终端发送所述第一调用信息,包括:响应于确定所述第一渲染指令不是可被异步化执行的渲染指令,向所述实体终端发送所述第一调用信息。
10、在一些实施例中,在截获所述目标应用调用图形渲染接口的第一调用信息之前,还包括:截获所述目标应用调用图形渲染接口的第二调用信息,其中包括第二渲染指令和相关的第二数据;利用所述指令识别策略,确定所述第二渲染指令是否为可被异步化执行的渲染指令;响应于确定所述第二渲染指令是可被异步化执行的渲染指令,针对所述第二数据生成虚拟句柄,向所述目标应用返回所述虚拟句柄,以及缓存所述第二调用信息和所述虚拟句柄;所述向所述实体终端发送所述第一调用信息,包括:向所述实体终端发送所述第一调用信息和所述第二调用信息。
11、在一些实施例中,在向所述实体终端发送所述第一调用信息和所述第二调用信息之后,还包括:从所述实体终端接收针对所述第二数据生成的真实句柄;将所述真实句柄关联于所述虚拟句柄进行缓存。
12、在一些实施例中,在将所述真实句柄关联于所述虚拟句柄进行缓存之后,还包括:截获所述目标应用调用图形渲染接口的第三调用信息,其中包括第三渲染指令和相关的第三数据;利用所述指令识别策略,确定所述第三渲染指令是否为可被异步化执行的渲染指令;响应于确定所述第三渲染指令不是可被异步化执行的渲染指令,在所述第三数据中存在所述虚拟句柄的情况下,将所述第三数据中的所述虚拟句柄替换成所述真实句柄,并向所述实体终端发送更新后的所述第三调用信息。
13、在一些实施例中,所述向所述实体终端发送所述第一调用信息和所述第二调用信息,包括:对所述第一数据和所述第二数据分别进行压缩处理,并将所述第一调用信息中的所述第一数据和所述第二调用信息中的所述第二数据替换成对应的压缩结果;对更新后的所述第一调用信息和所述第二调用信息进行封装处理,得到封装结果;其中,所述封装结果包括,按照指令调用先后顺序对更新后的所述第一调用信息和所述第二调用信息的聚合结果,以及为所述聚合结果添加的头部信息,所述头部信息包括更新后的所述第一调用信息和所述第二调用信息各自的长度;向所述实体终端发送所述封装结果。
14、在一些实施例中,所述头部信息还包括以下中的至少一项:所述压缩处理采用的压缩算法、原始的所述第一调用信息和所述第二调用信息各自的长度、调用信息数目。
15、在一些实施例中,所述云服务器中创建有若干第一渲染线程,所述实体终端中创建有对应于所述若干第一渲染线程的若干第二渲染线程;所述向所述实体终端发送所述第一调用信息,包括:在所述若干第一渲染线程中确定出目标线程,由所述目标线程向所述实体终端中对应于所述目标线程的第二渲染线程发送所述第一调用信息。
16、在一些实施例中,所述云服务器中还创建有第一控制线程,所述实体终端中还创建有第二控制线程,所述若干第一渲染线程由所述云服务器利用所述第一控制线程创建,所述若干第二渲染线程由所述第二控制线程在接收到所述云服务器通过所述第一控制线程发送的相关控制信息后创建。
17、在一些实施例中,所述虚拟终端包括虚拟手机,所述实体终端包括实体手机;或者,所述虚拟终端包括虚拟平板电脑,所述实体终端包括实体平板电脑;或者,所述虚拟终端包括虚拟游戏机,所述实体终端包括实体游戏机。
18、在一些实施例中,所述目标应用包括游戏应用。
19、在一些实施例中,所述云服务器不具有图形处理器。
20、第二方面,本说明书实施例提供了一种图形渲染方法,涉及包含图形处理器的实体终端和运行有虚拟终端的云服务器,所述虚拟终端中安装有目标应用,所述方法包括:在用户使用所述实体终端访问所述目标应用的过程中,所述云服务器截获所述目标应用调用图形渲染接口的第一调用信息,其中包括第一渲染指令和相关的第一数据;所述云服务器向所述实体终端发送所述第一调用信息;所述实体终端利用所述图形处理器根据所述第一数据执行所述第一渲染指令。
21、第三方面,本说明书实施例提供了一种图形渲染装置,应用于运行有虚拟终端的云服务器,所述虚拟终端中安装有目标应用,所述装置包括:截获单元,被配置成在用户使用包含图形处理器的实体终端访问所述目标应用的过程中,截获所述目标应用调用图形渲染接口的第一调用信息,其中包括第一渲染指令和相关的第一数据;发送单元,被配置成向所述实体终端发送所述第一调用信息,以使得所述实体终端利用所述图形处理器根据所述第一数据执行所述第一渲染指令。
22、第四方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
23、第五方面,本说明书实施例提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现如第一方面中任一实现方式描述的方法。
24、第六方面,本说明书实施例提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面中任一实现方式描述的方法。
25、本说明书的上述实施例提供的方案,涉及包含图形处理器(graphics processingunit,gpu)的实体终端和运行有虚拟终端的云服务器,虚拟终端中安装有目标应用。在该方案中,在用户使用实体终端访问目标应用的过程中,通过由云服务器截获目标应用调用图形渲染接口的调用信息,并向实体终端发送该调用信息,以使得实体终端利用图形处理器执行该调用信息中的渲染指令,能将需要依赖图形处理器完成的渲染操作放到实体终端侧执行,如此能简化云端渲染流程,而且使得云服务器无需具有任何图形处理器资源。另外,向实体终端传输调用图形渲染接口的调用信息,相较于传输云端渲染的图像,能有效降低传输带宽。概括来说,该方案能够简化云端渲染流程,降低云服务器的资源成本。