本发明属于网页游戏,具体提供一种游戏渲染方法、网页游戏、计算机设备及存储介质。
背景技术:
1、随着移动互联网的快速发展,越来越多的软件产品在其业务中引入小游戏生态来丰富人们的碎片化娱乐时间,以此达到提升用户留存、增强用户粘性和增加商业收入等目的。尤其对于出海的软件产品,网页游戏是其主要的娱乐内容。基于web技术栈构建的h5游戏、小游戏等网页游戏,虽然天然具有研发周期短、成本低、可快速迭代等优点,并且在跨设备跨平台以及生态上的优势,但随着沉浸式游戏及元宇宙的发展趋势,更多webxr的游戏将会逐步进入大众视野,从游戏流畅度、画质清晰度、交互合理度等方面对网页游戏提出了更高的要求,这就需要网页游戏运行引擎有较高渲染能力。
2、通用的android的webview渲染机制中,webview的渲染线程并没有进行真正的光栅化,例如,对于canvas2d将绘制指令录制,对于webgl则会将gl指令编码到命令缓冲区中,当下一个硬件脉冲信号到来时才开始上一帧的真正绘制;并通过两级合成器将含有gpu纹理的帧数据同步给android渲染线程,然后交换帧缓冲区中当前网页的一帧渲染数据,完成网页上屏,使其存在渲染路径长、内存占用大、流畅度不够等缺陷。而surfaceview是一个有自己surface的view,它的渲染可以放在单独线程中执行,因而不会影响主线程对事件的响应,可以提升游戏、视频等展示性能。因此,如何基于surfaceview对通用渲染管线进行改造,从而缩短渲染路径、减少内存占用、提升游戏流畅度,已成为函待解决的问题。
3、相应地,本领域需要一种新的方案来解决上述问题。
技术实现思路
1、本发明旨在解决或部分解决上述技术问题,即,如何基于具有自己surface的view对通用渲染管线进行改造的问题。
2、在第一方面,本发明提出了一种游戏渲染方法,所述方法包括:
3、通过基于游戏画布元素设计的游戏模式开关开启游戏渲染;
4、创建渲染所述游戏画布元素所需的第二容器组件和中间接口层;
5、基于第一容器组件、所述第二容器组件和所述中间接口层渲染所述游戏画布元素;
6、其中,所述第二容器组件为具有自己的surface的view,且所述surface被设置为通过单独线程进行渲染,
7、所述中间接口层的功能包括建立渲染api与游戏窗口之间的关联。
8、在上述游戏渲染方法的一个实施方式中,“创建渲染所述游戏画布元素所需的第二容器组件和中间接口层”包括:
9、基于所述游戏画布元素,应用程序进程创建所述第二容器组件;
10、基于surface,所述第一容器组件创建所述中间接口层;
11、其中,所述surface由所述第二容器组件生成。
12、在上述游戏渲染方法的一个实施方式中,“基于第一容器组件、所述第二容器组件和所述中间接口层渲染所述游戏画布元素”包括:
13、所述第一容器组件执行所述游戏画布元素的光栅化;
14、基于所述光栅化的纹理数据和所述中间接口层,所述第二容器组件执行渲染操作;
15、其中,所述中间接口层被绑定到默认的渲染窗口缓冲区。
16、在上述游戏渲染方法的一个实施方式中,“所述第一容器组件执行所述游戏画布元素的光栅化”包括:
17、通过独立的游戏渲染命令缓冲区,所述第一容器组件的主线程获取所述游戏画布元素相关的渲染绘制指令;
18、所述第一容器组件的gpu线程执行所述光栅化。
19、在上述游戏渲染方法的一个实施方式中,“基于所述光栅化的纹理数据和所述中间接口层,所述第二容器组件执行渲染操作”包括:
20、将所述纹理数据与所述中间接口层进行绑定,并添加到游戏画布元素上下文,得到游戏绘制数据;
21、基于所述第二容器组件的所述surface通过独立的gpu线程渲染所述游戏绘制数据。
22、在上述游戏渲染方法的一个实施方式中,所述第一容器组件为webview,所述第二容器组件为surfaceview,所述中间接口层为egl。
23、在上述游戏渲染方法的一个实施方式中,“通过基于游戏画布元素设计的游戏模式开关开启游戏渲染”包括:
24、通过所述游戏画布元素属性中的所述游戏模式开关,开启所述游戏渲染;
25、或者,通过游戏代码中的所述游戏模式开关,开启所述游戏渲染;
26、或者,通过所述第一容器组件中的所述游戏模式开关接口,开启所述游戏渲染。
27、在第二方面,本发明提出了一种网页游戏,所述网页游戏被设置为应用上述任一项方案所述的游戏渲染方法对所述网页游戏的画布元素进行渲染。
28、在第三方面,本发明提出了一种计算机设备,所述计算机设备包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述任一项方案所述的游戏渲染方法和/或网页游戏。
29、在第四方面,本发明提出了一种存储介质,所述存储介质适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述任一项方案所述的游戏渲染方法和/或网页游戏。
30、本发明通过提供多种形式的游戏模式开关以开启本发明的游戏渲染方法,使游戏开发人员可根据自身情况选择合适的方案,这不仅可以降低游戏开发的难度,还使本发明的方法具有较高的适用性。通过引入具有自己的surface(该surface可通过单独线程进行渲染)的view优化渲染管线,可以缩短渲染路径,减少内存占用,从而提升了游戏流畅度及用户感受,具有较高的实用性。
1.一种游戏渲染方法,其特征在于,所述方法包括:
2.根据权利要求1所述的游戏渲染方法,其特征在于,“创建渲染所述游戏画布元素所需的第二容器组件和中间接口层”包括:
3.根据权利要求2所述的游戏渲染方法,其特征在于,“基于第一容器组件、所述第二容器组件和所述中间接口层渲染所述游戏画布元素”包括:
4.根据权利要求3所述的游戏渲染方法,其特征在于,“所述第一容器组件执行所述游戏画布元素的光栅化”包括:
5.根据权利要求4所述的游戏渲染方法,其特征在于,“基于所述光栅化的纹理数据和所述中间接口层,所述第二容器组件执行渲染操作”包括:
6.根据权利要求1至5中任一项所述的游戏渲染方法,其特征在于,所述第一容器组件为webview,所述第二容器组件为surfaceview,所述中间接口层为egl。
7.根据权利要求6所述的游戏渲染方法,其特征在于,“通过基于游戏画布元素设计的游戏模式开关开启游戏渲染”包括:
8.一种网页游戏,其特征在于,所述网页游戏被设置为应用权利要求1至7中任一项所述的游戏渲染方法对所述网页游戏的画布元素进行渲染。
9.一种计算机设备,所述计算机设备包括处理器和存储装置,其特征在于,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行权利要求1至7中任一项所述的游戏渲染方法和/或权利要求8所述的网页游戏。
10.一种存储介质,其特征在于,所述存储介质适于存储多条程序代码,所述程序代码适于由处理器加载并运行以执行权利要求1至7中任一项所述的游戏渲染方法和/或权利要求8所述的网页游戏。
