对象渲染方法、装置、介质及设备与流程
- 国知局
- 2024-07-11 16:11:21
本技术涉及电子通信,尤其涉及一种对象渲染,特别涉及一种对象渲染方法、装置、介质及设备。
背景技术:
1、游戏引擎是指一个已经编写好的可编辑的电脑游戏系统,也可以指一些交互式实时图像应用程序的核心组件,游戏引擎可以为游戏开发者提供游戏开发所需的各种工具,降低游戏开发的复杂度,让开发者更简便快速地制作游戏。目前,市场上主流的引擎主要有unity引擎、白鹭引擎(egret)、cocos creator引擎、虚幻引擎、起源引擎、iw引擎等。不同的游戏引擎有各自的优缺点,例如白鹭引擎适用于处理大量的2d图形和动画,而cocoscreator引擎则更适合处理3d图形和物理引擎。若能够将不同的游戏引擎实现跨引擎混合,例如让白鹭引擎开发的游戏程序转成用cocos creator引擎进行渲染,便能够实现在白鹭引擎快速生成游戏程序后在cocos creator引擎得到更加精美的游戏画面效果。
2、常见的现有混合方案包括基于renderbuffer(渲染缓冲区,用于分配和存储渲染资源)方式混合,这种混合方式是将另外的引擎渲染到离屏canvas(画布)中,先通过获取离屏的canvas的纹理再渲染到主canvas中。但是上述方式的问题在于无法做到渲染节点穿插,相当不灵活,并且相当于两个游戏引擎的渲染都在运行,使用离屏canvas的渲染方式会带来更大的性能消耗。
技术实现思路
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、遍历所述第一节点树中各渲染节点;
26、当识别到第一渲染节点时将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;
27、当识别到所述第二新增渲染节点时根据其中存储的引用信息返回对应的第三渲染节点至所述第二节点树。
28、相应的,本技术实施例另一方面还提供了一种对象渲染装置,所述对象渲染装置包括:
29、获取模块,用于通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
30、转换模块,用于遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
31、渲染模块,用于通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
32、绘制模块,用于通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
33、相应的,本技术实施例另一方面还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行如上所述的对象渲染方法。
34、相应的,本技术实施例另一方面还提供了一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令以执行如上所述的对象渲染方法。
35、本技术实施例提供了一种对象渲染方法、装置、介质及设备,该方法通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取第一待渲染对象的第一节点树,第一节点树中包括第一渲染节点,第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;遍历第一节点树中各第一渲染节点,将渲染节点数据从第一格式转换为与第一游戏引擎对应的第二格式,生成第二渲染节点;通过第一游戏引擎根据第二渲染节点进行渲染绘制,得到渲染数据;通过第一游戏引擎根据渲染数据将第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。本技术实施例通过将第一待渲染对象中的各第一渲染节点转换为数据格式与第一游戏引擎对应的第二渲染节点,再通过第一游戏引擎基于第二渲染节点完成对第一待渲染对象的跨引擎渲染,从而在不影响游戏性能和体验的情况下,实现更加复杂和多样化的游戏效果,提高游戏的品质和用户的体验。
本文地址:https://www.jishuxx.com/zhuanli/20240615/77953.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表