一种跨进程的独立云渲染方法、装置、设备及存储介质与流程

文档序号:34461521发布日期:2023-06-15 03:26阅读:62来源:国知局
一种跨进程的独立云渲染方法、装置、设备及存储介质与流程

本发明属于云渲染,特别是涉及一种跨进程的独立云渲染方法、装置、设备及存储介质。


背景技术:

1、目前市面上与本发明类似的技术有两种。第一种是各大游戏引擎原生的云渲染技术,这种技术主要是游戏引擎底层将自身渲染的画面经过自身开发出的视频编解码模块以及网络通讯模块,将画面传输至web端。该技术存在的缺陷是它和引擎是紧密连接的,在遇到云渲染过程中触发异常时,会导致整个程序崩溃退出,而重新启动耗时较长且容易丢失运行过程中的操作状态。第二种是完全独立的云渲染技术,这种技术主要有两种实现方式。一种是通过获取程序在计算机中的进程id,获取进程句柄,并定位到对应的程序窗口后,抓取整个程序窗口中的画面并进行编码传输。该方式存在的缺陷是抓取程序窗口的画面这一步骤发生在cpu上,占用cpu计算能力,且随着程序分辨率越高其消耗就越高,加重了服务器的硬件负载压力。另一种方式是通过向目标程序注入hook.dll来实现画面截取。其主要的应用场景是游戏直播录屏。因为无法直接获取目标程序的画面数据,所以通过外部代码注入的方式获取画面,该方式的缺陷在于需要严格控制dll注入的时机,如果晚于目标程序基础图形渲染初始化,可能会出现注入失败的问题。同时该方式仍然是监测目标程序的渲染流程,占用cpu计算能力获取画面数据。


技术实现思路

1、本发明的目的在于克服现有技术的不足,提供一种跨进程的独立云渲染方法、装置、设备及存储介质。

2、本发明的目的是通过以下技术方案来实现的:

3、根据本发明的第一方面,一种跨进程的独立云渲染方法,包括:

4、确定目标程序的框架类型;

5、根据所述目标程序的框架类型将适配的插件或链接库集成至目标程序;

6、在目标程序中,通过插件或链接库对目标程序的画面数据进行处理,将画面数据设置为可跨进程访问的共享纹理数据,并将共享纹理数据写入插件或链接库创建的共享内存中;

7、独立云渲染程序实时读取共享内存中的共享纹理数据,通过gpu访问共享纹理数据,对其进行格式转换和压缩,得到压缩数据;

8、将压缩数据传输至预先与独立云渲染程序建立连接的web网页,在web网页端对压缩数据进行解码后呈现在页面中。

9、进一步地,所述目标程序的框架类型为ue引擎框架、u3d引擎框架、cocos引擎框架或原生c/c++框架,所述原生c/c++框架为基于opengl、directx或vulkan图形渲染技术的原生c/c++框架。

10、进一步地,根据所述目标程序的框架类型将适配的插件或链接库集成至目标程序,包括:

11、若所述目标程序的框架类型为ue引擎框架,则将配套的ue插件集成至开发框架中,编译成功后启动目标程序;

12、若所述目标程序的框架类型为u3d引擎框架,则将配套的u3d插件集成至开发框架中,编译成功后启动目标程序;

13、若所述目标程序的框架类型为cocos引擎框架,则将配套的cocos插件集成至开发框架中,编译成功后启动目标程序;

14、若所述目标程序的框架类型为基于opengl、directx或vulkan图形渲染技术的原生c/c++框架,则将配套的c++链接库文件集成至开发框架中,编译成功后启动目标程序。

15、进一步地,在目标程序中,通过插件或链接库对目标程序的画面数据进行处理,将画面数据设置为可跨进程访问的共享纹理数据,并将共享纹理数据写入插件或链接库创建的共享内存中,包括:

16、绑定目标程序渲染画面时发送的通知,获取画面纹理指针;

17、根据目标程序使用的图形渲染技术,创建可跨进程访问的共享纹理;

18、将创建的共享纹理句柄写入共享内存中。

19、进一步地,根据目标程序使用的图形渲染技术,创建可跨进程访问的共享纹理,包括:

20、若采用directx12,则创建id3d12resource共享纹理句柄;

21、若采用directx11,则创建id3d11texture2d;

22、若采用opengl或vulkan,则将后台缓冲区纹理数据交由gpu创建共享纹理。

23、根据本发明的第二方面,一种跨进程的独立云渲染装置,包括:

24、框架类型确定模块,用于确定目标程序的框架类型;

25、集成模块,用于根据所述目标程序的框架类型将适配的插件或链接库集成至目标程序;

26、画面数据处理模块,用于在目标程序中通过插件或链接库对目标程序的画面数据进行处理,将画面数据设置为可跨进程访问的共享纹理数据,并将共享纹理数据写入插件或链接库创建的共享内存中;

27、独立云渲染程序模块,用于实时读取共享内存中的共享纹理数据,通过gpu访问共享纹理数据,对其进行格式转换和压缩,得到压缩数据;

28、显示模块,用于将压缩数据传输至预先与独立云渲染程序建立连接的web网页,以便web网页端将压缩数据进行解码、并呈现在页面中。

29、进一步地,所述目标程序的框架类型为ue引擎框架、u3d引擎框架、cocos引擎框架或原生c/c++框架,所述原生c/c++框架为基于opengl、directx或vulkan图形渲染技术的原生c/c++框架。

30、进一步地,所述画面数据处理模块具体用于绑定目标程序渲染画面时发送的通知,获取画面纹理指针,根据目标程序使用的图形渲染技术,创建可跨进程访问的共享纹理,将创建的共享纹理句柄写入共享内存中。

31、根据本发明的第三方面,一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如根据本发明的第一方面所述的方法。

32、根据本发明的第四方面,一种存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如根据本发明的第一方面所述的方法。

33、本发明的有益效果是:

34、(1)本发明可以保证在目标程序渲染画面的流程中直接通过gpu获取画面数据,不占用cpu计算能力,且对画面数据的处理流程如编码、传输模块由独立的进程进行管理,遇到崩溃不会导致目标程序崩溃,大大提高了云渲染的稳定性,具备高性能优势;

35、(2)本发明的云渲染程序的开发和目标程序的开发是分离的,是两个独立的程序,只是本发明通过共享内存技术建立了两者的数据通信。采用本发明的云渲染技术,云渲染程序如果崩溃了,完全不影响目标程序的正常运行,而且重启云渲染程序的速度非常快,因为它只承载云渲染这一个功能模块,体量很小;

36、(3)本发明不是通过外部代码注入的方式来获取目标程序的渲染画面,而是提供适配目标程序框架类型的插件或链接库,需要目标程序集成插件或链接库后,插件自启动,绑定到目标程序渲染画面的回调通知上,直接获取渲染画面,性能更高。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1