首页 / 专利分类库 / 运动;游戏;娱乐活动 / 对象渲染方法、装置、介质及设备

对象渲染方法、装置、介质及设备

申请号 CN202410212942.X 申请日 2024-02-26 公开(公告)号 CN117899472A 公开(公告)日 2024-04-19
申请人 广州博冠信息科技有限公司; 发明人 刘彦君;
摘要 本 申请 实施例 提供一种对象 渲染 方法、装置、存储介质及 电子 设备,该方法包括通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取第一待渲染对象的第一 节点 树,第一节点树中包括第一渲染节点;遍历第一节点树中各第一渲染节点,将渲染节点数据从第一格式转换为与第一游戏引擎对应的第二格式,生成第二渲染节点;通过第一游戏引擎根据第二渲染节点进行渲染绘制,得到渲染数据;通过第一游戏引擎根据渲染数据将第一待渲染对象绘制在预设的前端界面上。本申请通过将第一待渲染对象中的各第一渲染节点转换为数据格式与第一游戏引擎对应的第二渲染节点,再通过第一游戏引擎基于第二渲染节点完成对第一待渲染对象的跨引擎渲染。
权利要求

1.一种对象渲染方法,其特征在于,包括:
通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
2.如权利要求1所述的对象渲染方法,其特征在于,在所述将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式之前,所述方法还包括:
创建用于执行将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式的节点适配器,所述节点适配器中配置有用于将第一渲染节点中的渲染节点数据从第一格式转换为第二格式的转换策略,及所述第一渲染节点与转换策略之间的映射关系。
3.如权利要求2所述的对象渲染方法,其特征在于,在所述将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式之前,所述方法还包括:
在存储所述第一游戏引擎的第一脚本代码的文件夹根目录中新增空文件夹;
将所述第二游戏引擎的第二脚本代码存入所述空文件夹中,同时删除所述第二脚本代码中用于执行在前端界面上渲染绘制第一待渲染对象的渲染逻辑代码。
4.如权利要求3所述的对象渲染方法,其特征在于,在所述得到渲染完成的目标对象之后,所述方法还包括:
响应于针对所述目标对象在前端界面上的预设操作,记录所述目标对象受所述预设操作影响后更新的第二渲染节点;
根据所述更新的第二渲染节点在第一渲染树中标记对应的第一渲染节点,同时将所述目标对象其他不受所述预设操作影响的第二渲染节点缓存到所述节点适配器中的缓存区域。
5.如权利要求4所述的对象渲染方法,其特征在于,在所述遍历所述第一节点树中各第一渲染节点之后,所述方法还包括:
判断所述各第一渲染节点中是否存在被标记的目标渲染节点,若存在目标渲染节点,则将所述目标渲染节点中的渲染节点数据从与第一游戏引擎对应的第一格式转换为与第二游戏引擎对应的第二格式,生成第二渲染节点后缓存到所述节点适配器缓存区域中替换相应的历史的第二渲染节点。
6.如权利要求1所述的对象渲染方法,其特征在于,在所述遍历所述第一节点树中各第一渲染节点之后,所述方法还包括:
判断所述第一渲染节点对应所述前端界面的渲染层级关系,根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;
所述渲染层级关系包括所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方、或所述第一渲染节点位于预设的第三渲染节点中间,所述第三渲染节点用于渲染由所述第一游戏引擎生成的第二待渲染对象。
7.如权利要求6所述的对象渲染方法,其特征在于,所述根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中,包括:
当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方时,通过在预设的第三渲染节点上方或下方新增一个空白的第一新增节点,将所述第一渲染节点转换成第二渲染节点后新增至所述第一新增节点中,以将所述第二渲染节点新增至第二节点树中。
8.如权利要求6所述的对象渲染方法,其特征在于,所述根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中,包括:
当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点中间时,根据所述第三渲染节点与所述第一渲染节点之间的渲染顺序在所述第一节点树中插入空白的第二新增渲染节点;
获取所述第三渲染节点的节点引用信息写入对应的所述第二新增渲染节点;
遍历所述第一节点树中各渲染节点;
当识别到第一渲染节点时将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;
当识别到所述第二新增渲染节点时根据其中存储的引用信息返回对应的第三渲染节点至所述第二节点树。
9.一种对象渲染装置,其特征在于,所述对象渲染装置包括:
获取模,用于通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
转换模块,用于遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
渲染模块,用于通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
制模块,用于通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至8任一项所述的对象渲染方法。
11.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令以执行权利要求1至8任一项所述的对象渲染方法。

说明书全文

对象渲染方法、装置、介质及设备

技术领域

[0001] 本申请涉及电子通信技术领域,尤其涉及一种对象渲染技术领域,特别涉及一种对象渲染方法、装置、介质及设备。

背景技术

[0002] 游戏引擎是指一个已经编写好的可编辑的电脑游戏系统,也可以指一些交互式实时图像应用程序的核心组件,游戏引擎可以为游戏开发者提供游戏开发所需的各种工具,降低游戏开发的复杂度,让开发者更简便快速地制作游戏。目前,市场上主流的引擎主要有Unity引擎、白鹭引擎(Egret)、Cocos Creator引擎、虚幻引擎、起源引擎、IW引擎等。不同的游戏引擎有各自的优缺点,例如白鹭引擎适用于处理大量的2D图形和动画,而Cocos Creator引擎则更适合处理3D图形和物理引擎。若能够将不同的游戏引擎实现跨引擎混合,例如让白鹭引擎开发的游戏程序转成用Cocos Creator引擎进行渲染,便能够实现在白鹭引擎快速生成游戏程序后在Cocos Creator引擎得到更加精美的游戏画面效果。
[0003] 常见的现有混合方案包括基于renderBuffer(渲染缓冲区,用于分配和存储渲染资源)方式混合,这种混合方式是将另外的引擎渲染到离屏canvas(画布)中,先通过获取离屏的canvas的纹理再渲染到主canvas中。但是上述方式的问题在于无法做到渲染节点穿插,相当不灵活,并且相当于两个游戏引擎的渲染都在运行,使用离屏canvas的渲染方式会带来更大的性能消耗。发明内容
[0004] 本申请实施例提供一种对象渲染方法、装置、介质及设备,以解决目前跨引擎渲染时存在效率低、性能消耗大的问题。
[0005] 本申请实施例一方面提供了一种对象渲染方法,所述方法包括:
[0006] 通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
[0007] 遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
[0008] 通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
[0009] 通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0010] 在本申请实施例所述的对象渲染方法中,在所述将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式之前,所述方法还包括:
[0011] 创建用于执行将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式的节点适配器,所述节点适配器中配置有用于将第一渲染节点中的渲染节点数据从第一格式转换为第二格式的转换策略,及所述第一渲染节点与转换策略之间的映射关系。
[0012] 在本申请实施例所述的对象渲染方法中,在所述将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式之前,所述方法还包括:
[0013] 在存储所述第一游戏引擎的第一脚本代码的文件夹根目录中新增空文件夹;
[0014] 将所述第二游戏引擎的第二脚本代码存入所述空文件夹中,同时删除所述第二脚本代码中用于执行在前端界面上渲染绘制第一待渲染对象的渲染逻辑代码。
[0015] 在本申请实施例所述的对象渲染方法中,在所述得到渲染完成的目标对象之后,所述方法还包括:
[0016] 响应于针对所述目标对象在前端界面上的预设操作,记录所述目标对象受所述预设操作影响后更新的第二渲染节点;
[0017] 根据所述更新的第二渲染节点在第一渲染树中标记对应的第一渲染节点,同时将所述目标对象其他不受所述预设操作影响的第二渲染节点缓存到所述节点适配器中的缓存区域,以实现第二渲染节点数据在所述目标对象进行周期性渲染操作时能够被复用。
[0018] 在本申请实施例所述的对象渲染方法中,在所述遍历所述第一节点树中各第一渲染节点之后,所述方法还包括:
[0019] 判断所述各第一渲染节点中是否存在被标记的目标渲染节点,若存在目标渲染节点,则所述目标渲染节点中的渲染节点数据从与第一游戏引擎对应的第一格式转换为与第二游戏引擎对应的第二格式,生成第二渲染节点后缓存到所述节点适配器缓存区域中替换相应的历史的第二渲染节点。
[0020] 在本申请实施例所述的对象渲染方法中,在所述遍历所述第一节点树中各第一渲染节点之后,所述方法还包括:
[0021] 判断所述第一渲染节点对应所述前端界面的渲染层级关系,根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;
[0022] 所述渲染层级关系包括所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方、或所述第一渲染节点位于预设的第三渲染节点中间,所述第三渲染节点用于渲染由所述第一游戏引擎生成的第二待渲染对象。
[0023] 在本申请实施例所述的对象渲染方法中,所述根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中,包括:
[0024] 当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方时,通过在预设的第三渲染节点上方或下方新增一个空白的第一新增节点,将所述第一渲染节点转换成第二渲染节点后新增至所述第一新增节点中,以将所述第二渲染节点新增至第二节点树中。
[0025] 在本申请实施例所述的对象渲染方法中,所述根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中,包括:
[0026] 当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点中间时,根据所述第三渲染节点与所述第一渲染节点之间的渲染顺序在所述第一节点树中插入空白的第二新增渲染节点;
[0027] 获取所述第三渲染节点的节点引用信息写入对应的所述第二新增渲染节点;
[0028] 遍历所述第一节点树中各渲染节点;
[0029] 当识别到第一渲染节点时将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;
[0030] 当识别到所述第二新增渲染节点时根据其中存储的引用信息返回对应的第三渲染节点至所述第二节点树。
[0031] 相应的,本申请实施例另一方面还提供了一种对象渲染装置,所述对象渲染装置包括:
[0032] 获取模,用于通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
[0033] 转换模块,用于遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
[0034] 渲染模块,用于通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
[0035] 绘制模块,用于通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0036] 相应的,本申请实施例另一方面还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行如上所述的对象渲染方法。
[0037] 相应的,本申请实施例另一方面还提供了一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令以执行如上所述的对象渲染方法。
[0038] 本申请实施例提供了一种对象渲染方法、装置、介质及设备,该方法通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取第一待渲染对象的第一节点树,第一节点树中包括第一渲染节点,第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;遍历第一节点树中各第一渲染节点,将渲染节点数据从第一格式转换为与第一游戏引擎对应的第二格式,生成第二渲染节点;通过第一游戏引擎根据第二渲染节点进行渲染绘制,得到渲染数据;通过第一游戏引擎根据渲染数据将第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。本申请实施例通过将第一待渲染对象中的各第一渲染节点转换为数据格式与第一游戏引擎对应的第二渲染节点,再通过第一游戏引擎基于第二渲染节点完成对第一待渲染对象的跨引擎渲染,从而在不影响游戏性能和体验的情况下,实现更加复杂和多样化的游戏效果,提高游戏的品质和用户的体验。附图说明
[0039] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040] 图1为本申请实施例提供的对象渲染方法的流程示意图。
[0041] 图2为本申请实施例提供的节点适配器进行节点转换的流程示意图。
[0042] 图3为本申请实施例提供的对象渲染装置的结构示意图。
[0043] 图4为本申请实施例提供的对象渲染装置的另一种结构示意图。
[0044] 图5为本申请实施例提供的电子设备的结构示意图。

具体实施方式

[0045] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
[0046] 需要说明的是,游戏引擎是指一个已经编写好的可编辑的电脑游戏系统,也可以指一些交互式实时图像应用程序的核心组件,游戏引擎可以为游戏开发者提供游戏开发所需的各种工具,降低游戏开发的复杂度,让开发者更简便快速地制作游戏。目前,市场上主流的引擎主要有Unity引擎、白鹭引擎、Cocos Creator引擎、虚幻引擎、起源引擎、IW引擎等。不同的游戏引擎有各自的优缺点,例如白鹭引擎适用于处理大量的2D图形和动画,而Cocos Creator引擎则更适合处理3D图形和物理引擎。若能够将不同的游戏引擎实现跨引擎混合,例如让白鹭引擎开发的游戏程序转成用Cocos Creator引擎进行渲染,便能够实现在白鹭引擎快速生成游戏程序后在Cocos Creator引擎得到更加精美的游戏画面效果。
[0047] 常见的现有混合方案包括基于renderBuffer(渲染缓冲区,用于分配和存储渲染资源)方式混合,这种混合方式是将另外的引擎渲染到离屏canvas(画布)中,先通过获取离屏的canvas的纹理再渲染到主canvas中。但是上述方式的问题在于无法做到渲染节点穿插,相当不灵活,并且相当于两个游戏引擎的渲染都在运行,使用离屏canvas的渲染方式会带来更大的性能消耗。
[0048] 为了解决上述技术问题,本申请实施例提供一种对象渲染方法。利用本申请实施例提供的对象渲染方法,通过将第一待渲染对象中的各第一渲染节点转换为数据格式与第一游戏引擎对应的第二渲染节点,再通过第一游戏引擎基于第二渲染节点完成对第一待渲染对象的跨引擎渲染,从而在不影响游戏性能和体验的情况下,实现更加复杂和多样化的游戏效果,提高游戏的品质和用户的体验。
[0049] 请参阅图1‑图2,图1为本申请实施例提供的对象渲染方法的流程示意图。图2为本申请实施例提供的节点适配器进行节点转换的流程示意图。所述对象渲染方法,该对象渲染方法中各个步骤的执行主体既可以相同也可以不同,上述执行主体可以是电子设备也可以是服务器。所述电子设备可以是个人计算机等设备。
[0050] 所述方法可以包括以下步骤:
[0051] 步骤101,通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式。
[0052] 需要说明的是,本方案主要是为实现跨游戏引擎开发游戏程序提出的,例如将适用于处理大量2D图形和动画的白鹭引擎和适用于处理3D图形和物理引擎的Cocos Creator引擎进行结合,让白鹭引擎开发的游戏程序转成用Cocos Creator引擎进行渲染,能够实现在白鹭引擎快速生成游戏程序后在Cocos Creator引擎得到更加精美的游戏画面效果。需要说明的是,白鹭引擎和Cocos Creator引擎的结合只是能够适用于本方案的一种举例,并不是只能采用白鹭引擎和Cocos Creator引擎,也可以采用其他游戏引擎,在此不做限定。
[0053] 在本实施例中,以白鹭引擎和Cocos  Creator引擎进行结合为例,将Cocos Creator引擎作为第一游戏引擎,白鹭引擎作为第二游戏引擎。由于本方案是实现将第二游戏引擎开发的游戏程序转成用第一游戏引擎进行渲染,能够实现第二游戏引擎快速生成游戏程序后在第一游戏引擎进行渲染得到更加精美的游戏画面效果,因此首先需要将第二游戏引擎嵌入第一游戏引擎,实际中是在项目架构中将第二游戏引擎生成的脚本文件嵌入到第一游戏引擎生成的脚本文件中。
[0054] 具体地,在存储第一游戏引擎的第一脚本代码的文件夹根目录中新增空文件夹;将第二游戏引擎的第二脚本代码存入空文件夹中,同时删除第二脚本代码中用于执行在前端界面上渲染绘制第一待渲染对象的渲染逻辑代码,只保留UI相关的逻辑代码,避免两个不同游戏引擎的渲染逻辑都在运行,这也是解决现有技术中采用离屏canvas(画布)的渲染方式带来性能消耗问题的关键所在。
[0055] 在添加第二脚本代码到第一脚本代码的文件夹根目录后,便可通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,并获取第一待渲染对象的第一节点树。
[0056] 需要解释的是,待渲染对象指的是渲染到前端界面上的具体虚拟模型,例如游戏领域中的“xx英雄色”。节点树指的是用于管理游戏场景中所有元素的数据结构,可以理解为是一个具有根节点,且以根节点为根挂载有多个用于存放数据的节点的树形结构
[0057] 在本方案中,第一节点树包括至少一个第一渲染节点,第一渲染节点可以是图片节点(bitmap)、容器节点(Container)、文本节点(TextFiled)、滚动列表节点(ScrollView)等中的一个或多个,在此不做限定。每个第一渲染节点中存储有对应的渲染节点数据,渲染节点数据主要表示异地渲染节点在渲染时使用的基础信息,如第一渲染节点在渲染时所使用的着色器程序、着色器参数、九宫格数据、宽高、坐标位置、纹理数据等。
[0058] 步骤102,遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点。
[0059] 需要说明的是,渲染节点数据在不同的游戏引擎中会以不同的数据格式表现,以图片节点中存储的坐标数据为例,坐标数据在第二游戏引擎中是以二维坐标的形式存在,而在第一游戏引擎中是以三维坐标的形式存在。因此将第二游戏引擎开发的游戏程序转成用第一游戏引擎进行渲染的核心关键在于通过遍历第一节点树中各个第一渲染节点,将渲染节点数据从第一格式转换为与第一游戏引擎对应的第二格式,生成供第一游戏引擎渲染的第二渲染节点。
[0060] 在本方案中,执行将渲染节点数据从第一格式转换为与第一游戏引擎对应的第二格式是基于预先创建的节点适配器实现,如图2所示,其中,节点适配器中配置有用于将第一渲染节点中的渲染节点数据从第一格式转换为第二格式的转换策略,及第一渲染节点与转换策略之间的映射关系。例如当节点适配器识别到当前的第一渲染节点为图片节点时,则根据映射关系确定图片节点的转换策略,如采用Sprite组件进行数据格式适配,将第一渲染节点中的各个渲染节点数据与Sprite组件的渲染节点数据进行匹配,在适配坐标时,进行坐标系的转换。
[0061] Sprite组件是Cocos Creator引擎中最重要的组件之一,它控制着2D图像的显示。Sprite组件可以直接添加到场景中,也可以作为其他组件的子节点添加,例如Canvas组件或者Layout组件。每个Sprite组件都需要指定一个SpriteFrame对象,这个对象包含了2D图像的纹理和其他信息,例如图像的大小、偏移量、旋转中心等。一个SpriteFrame对象可以通过资源面板中的Texture资源创建,也可以通过代码动态创建。除此之外,Sprite组件还有很多其他的属性可以配置,例如透明度、颜色、缩放比例、对齐方式等。这些属性可以通过编辑器界面或者代码来设置,以满足不同的需求。
[0062] 除此之外,对于第二游戏引擎中的其他类型的第一渲染节点,例如容器节点对应第一游戏引擎中的Node节点,里面包含有增加子节点的功能。文本节点对应第一游戏引擎中的Label节点,其中包含文本相关的各种属性设置,可直接同步到label组件中。滚动列表节点对应第一游戏引擎中的Scroll‑view节点,对应属性包含滚动相关的设置,以及滚动列表中内容的同步,内容就是一个正常的Group节点,对应同步到第一游戏引擎中的Node节点。
[0063] 步骤103,通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据。
[0064] 在本实施例中,第一游戏引擎通过绘制第一待渲染对象来刷新游戏画面的显示,在绘制第一待渲染对象时会遍历第二渲染节点,对第二渲染节点执行正常的节点加载和绘制流程,得到对应的第一渲染数据,其中,第一渲染数据是指计算机系统中表示图片和显示画面的数据,渲染数据中每个单元是一个像素点,每个像素点通过特定格式记录像素的颜色信息。
[0065] 步骤104,通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0066] 在本实施例中,通过第一游戏引擎根据渲染数据将第一待渲染对象绘制在显示画布上后投屏到显示终端,便可得到在通过第一游戏引擎渲染完成的目标对象。
[0067] 需要说明的是,在得到渲染完成的目标对象之后,由于游戏画面是实时渲染的过程,因此在完成目标对象的渲染后,还需要对目标对象进行定时渲染,使游戏画面呈现动态效果。同时目标对象的渲染节点数据也会随着玩家对目标对象的操控而改变,由于本方案在对第一待渲染对象每一进行渲染时都涉及存在第一渲染节点到第二渲染节点的转换过程,而这本身是一种消耗性能的行为,若加上实时渲染将会增加性能消耗,因此为了降低这部分转换带来的性能消耗问题,在一些实施例中,该方法还包括以下步骤:
[0068] 响应于针对目标对象在前端界面上的预设操作,例如控制目标对象从位置1移动到位置2,记录目标对象受预设操作影响后更新的第一渲染节点;将第一渲染节点在其对应的第一渲染节点中进行标记,同时将目标对象其他不受预设操作影响的第二渲染节点数据缓存到节点适配器中,以实现第二渲染节点数据在对目标对象进行周期性渲染操作时能够被复用,只对被标记的第一渲染节点进行转换。
[0069] 当节点适配器加载下一帧第一待渲染对象时,遍历第一节点树中各第一渲染节点,判断各第一渲染节点中是否存在被标记的目标渲染节点,若存在目标渲染节点,则将目标渲染节点中的渲染节点数据从与第一游戏引擎对应的第一格式转换为与第二游戏引擎对应的第二格式,生成第二渲染节点后缓存到节点适配器中替换相应的历史的第二渲染节点。若不存在目标渲染节点,则直接从节点适配器的缓存区域中获取对应的第二渲染节点生成第二节点树。
[0070] 在一些实施例中,游戏画面可能存在多层待渲染对象,例如“前景”、“中景”、“背景”。比如限定了“前景”层需要使用基于第一渲染节点转换得到的第二渲染节点进行渲染,而“中景”层需要使用第一游戏引擎本身存在的第三渲染节点进行渲染。为了确保不同层级的待渲染对象的顺序正确,在遍历第一节点树中各第一渲染节点之后,该方法还包括以下步骤:
[0071] 判断第一渲染节点对应前端界面的渲染层级关系,根据渲染层级关系将第一渲染节点转换成第二渲染节点后新增到与第二游戏引擎对应的第二节点树中;渲染层级关系包括第一渲染节点位于第二节点树中的已有渲染节点上方、或第一渲染节点位于第二节点树中的已有渲染节点下方、或第一渲染节点位于预设的第三渲染节点中间,第三渲染节点用于渲染由第一游戏引擎生成的第二待渲染对象。
[0072] 当渲染层级关系为第一渲染节点位于预设的第三渲染节点上方、或第一渲染节点位于预设的第三渲染节点下方时,通过在预设的第三渲染节点上方或下方新增一个空白的第一新增节点,将第一渲染节点转换成第二渲染节点后新增至第一新增节点中,以将第二渲染节点新增至第二节点树中。
[0073] 当渲染层级关系为第一渲染节点位于预设的第三渲染节点中间时,根据第三渲染节点与第一渲染节点之间的渲染顺序在第一节点树中插入空白的第二新增渲染节点;获取第三渲染节点的节点引用信息写入对应的第二新增渲染节点;遍历第一节点树中各渲染节点;当识别到第一渲染节点时将第一渲染节点转换成第二渲染节点后新增到与第二游戏引擎对应的第二节点树中;当识别到第二新增渲染节点时根据其中存储的引用信息返回对应的第三渲染节点至第二节点树。
[0074] 上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
[0075] 具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
[0076] 由上可知,本申请实施例提供的对象渲染方法通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。本申请实施例通过将第一待渲染对象中的各第一渲染节点转换为数据格式与第一游戏引擎对应的第二渲染节点,再通过第一游戏引擎基于第二渲染节点完成对第一待渲染对象的跨引擎渲染,从而在不影响游戏性能和体验的情况下,实现更加复杂和多样化的游戏效果,提高游戏的品质和用户的体验。
[0077] 本申请实施例还提供一种对象渲染装置,所述对象渲染装置可以集成在电子设备或服务器中。
[0078] 请参阅图3,图3为本申请实施例提供的对象渲染装置的结构示意图。对象渲染装置30可以包括:
[0079] 获取模块31,用于通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
[0080] 转换模块32,用于遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
[0081] 渲染模块33,用于通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
[0082] 绘制模块34,用于通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0083] 在一些实施例中,所述装置还包括创建模块,用于创建用于执行将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式的节点适配器,所述节点适配器中配置有用于将第一渲染节点中的渲染节点数据从第一格式转换为第二格式的转换策略,及所述第一渲染节点与转换策略之间的映射关系。
[0084] 在一些实施例中,所述装置还包括新增模块,用于在存储所述第一游戏引擎的第一脚本代码的文件夹根目录中新增空文件夹;将所述第二游戏引擎的第二脚本代码存入所述空文件夹中,同时删除所述第二脚本代码中用于执行在前端界面上渲染绘制第一待渲染对象的渲染逻辑代码。
[0085] 在一些实施例中,所述装置还包括响应模块,用于响应于针对所述目标对象在前端界面上的预设操作,记录所述目标对象受所述预设操作影响后更新的第二渲染节点;根据所述更新的第二渲染节点在第一渲染树中标记对应的第一渲染节点,同时将所述目标对象其他不受所述预设操作影响的第二渲染节点缓存到所述节点适配器中的缓存区域,以实现第二渲染节点数据在所述目标对象进行周期性渲染操作时能够被复用。
[0086] 在一些实施例中,所述装置还包括第一判断模块,用于判断所述各第一渲染节点中是否存在被标记的目标渲染节点,若存在目标渲染节点,则所述目标渲染节点中的渲染节点数据从与第一游戏引擎对应的第一格式转换为与第二游戏引擎对应的第二格式,生成第二渲染节点后缓存到所述节点适配器缓存区域中替换相应的历史的第二渲染节点。
[0087] 在一些实施例中,所述装置还包括第二判断模块,用于判断所述第一渲染节点对应所述前端界面的渲染层级关系,根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;所述渲染层级关系包括所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方、或所述第一渲染节点位于预设的第三渲染节点中间,所述第三渲染节点用于渲染由所述第一游戏引擎生成的第二待渲染对象。
[0088] 在一些实施例中,所述第二判断模块,用于当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方时,通过在预设的第三渲染节点上方或下方新增一个空白的第一新增节点,将所述第一渲染节点转换成第二渲染节点后新增至所述第一新增节点中,以将所述第二渲染节点新增至第二节点树中。
[0089] 在一些实施例中,所述第二判断模块,用于当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点中间时,根据所述第三渲染节点与所述第一渲染节点之间的渲染顺序在所述第一节点树中插入空白的第二新增渲染节点;获取所述第三渲染节点的节点引用信息写入对应的所述第二新增渲染节点;遍历所述第一节点树中各渲染节点;当识别到第一渲染节点时将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;当识别到所述第二新增渲染节点时根据其中存储的引用信息返回对应的第三渲染节点至所述第二节点树。
[0090] 具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。
[0091] 由上可知,本申请实施例提供的对象渲染装置30,通过获取模块31,用于通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;转换模块32,用于遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;渲染模块33,用于通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;绘制模块34,用于通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0092] 请参阅图4,图4为本申请实施例提供的对象渲染装置的另一结构示意图,对象渲染装置30包括存储器120、一个或多个处理器180、以及一个或多个应用程序,其中该一个或多个应用程序被存储于该存储器120中,并配置为由该处理器180执行;该处理器180可以包括获取模块31、转换模块32、渲染模块33以及绘制模块34。例如,以上各个部件的结构和连接关系可以如下:
[0093] 存储器120可用于存储应用程序和数据。存储器120存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器180通过运行存储在存储器120的应用程序,从而执行各种功能应用以及数据处理。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180对存储器120的访问
[0094] 处理器180是装置的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的应用程序,以及调用存储在存储器120内的数据,执行装置的各种功能和处理数据,从而对装置进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统用户界面和应用程序等。
[0095] 具体在本实施例中,处理器180会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器120中,并由处理器180来运行存储在存储器120中的应用程序,从而实现各种功能:
[0096] 获取指令,用于通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
[0097] 转换指令,用于遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
[0098] 渲染指令,用于通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
[0099] 绘制指令,用于通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0100] 在一些实施例中,所述程序还包括创建指令,用于创建用于执行将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式的节点适配器,所述节点适配器中配置有用于将第一渲染节点中的渲染节点数据从第一格式转换为第二格式的转换策略,及所述第一渲染节点与转换策略之间的映射关系。
[0101] 在一些实施例中,所述程序还包括新增指令,用于在存储所述第一游戏引擎的第一脚本代码的文件夹根目录中新增空文件夹;将所述第二游戏引擎的第二脚本代码存入所述空文件夹中,同时删除所述第二脚本代码中用于执行在前端界面上渲染绘制第一待渲染对象的渲染逻辑代码。
[0102] 在一些实施例中,所述程序还包括响应指令,用于响应于针对所述目标对象在前端界面上的预设操作,记录所述目标对象受所述预设操作影响后更新的第二渲染节点;根据所述更新的第二渲染节点在第一渲染树中标记对应的第一渲染节点,同时将所述目标对象其他不受所述预设操作影响的第二渲染节点缓存到所述节点适配器中的缓存区域,以实现第二渲染节点数据在所述目标对象进行周期性渲染操作时能够被复用。
[0103] 在一些实施例中,所述程序还包括第一判断指令,用于判断所述各第一渲染节点中是否存在被标记的目标渲染节点,若存在目标渲染节点,则所述目标渲染节点中的渲染节点数据从与第一游戏引擎对应的第一格式转换为与第二游戏引擎对应的第二格式,生成第二渲染节点后缓存到所述节点适配器缓存区域中替换相应的历史的第二渲染节点。
[0104] 在一些实施例中,所述程序还包括第二判断指令,用于判断所述第一渲染节点对应所述前端界面的渲染层级关系,根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;所述渲染层级关系包括所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方、或所述第一渲染节点位于预设的第三渲染节点中间,所述第三渲染节点用于渲染由所述第一游戏引擎生成的第二待渲染对象。
[0105] 在一些实施例中,所述第二判断指令,用于当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方时,通过在预设的第三渲染节点上方或下方新增一个空白的第一新增节点,将所述第一渲染节点转换成第二渲染节点后新增至所述第一新增节点中,以将所述第二渲染节点新增至第二节点树中。
[0106] 在一些实施例中,所述第二判断指令,用于当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点中间时,根据所述第三渲染节点与所述第一渲染节点之间的渲染顺序在所述第一节点树中插入空白的第二新增渲染节点;获取所述第三渲染节点的节点引用信息写入对应的所述第二新增渲染节点;遍历所述第一节点树中各渲染节点;当识别到第一渲染节点时将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;当识别到所述第二新增渲染节点时根据其中存储的引用信息返回对应的第三渲染节点至所述第二节点树。
[0107] 本申请实施例还提供一种电子设备。所述电子设备可以是电子设备或服务器。
[0108] 请参阅图5,图5示出了本申请实施例提供的电子设备的结构示意图,该电子设备可以用于实施上述实施例中提供的对象渲染方法。以电子设备为例,该电子设备1200可以为智能手机或平板电脑
[0109] 如图5所示,电子设备1200可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上(图中仅示出一个)计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、传输模块170、包括有一个或者一个以上(图中仅示出一个)处理核心的处理器180以及电源190等部件。本领域技术人员可以理解,图5中示出的电子设备1200结构并不构成对电子设备1200的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0110] RF电路110用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。RF电路110可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。RF电路110可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。
[0111] 存储器120可用于存储软件程序以及模块,如上述实施例中对象渲染方法对应的程序指令/模块,处理器180通过运行存储在存储器120内的软件程序以及模块,从而执行各种功能应用以及数据处理,可以根据电子设备所处的当前场景来自动选择振动提醒模式来进行对象渲染,既能够保证会议等场景不被打扰,又能保证用户可以感知来电,提升了电子设备的智能性。存储器120可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器120可进一步包括相对于处理器180远程设置的存储器,这些远程存储器可以通过网络连接至电子设备1200。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0112] 输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0113] 显示单元140可用于显示由用户输入的信息或提供给用户的信息以及电子设备1200的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light‑Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图5中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输出功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
[0114] 电子设备1200还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在电子设备1200移动到边时,关闭显示面板141和/或背光。作为运动传感器的一种,重加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备1200还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0115] 音频电路160、扬声器161,传声器162可提供用户与电子设备1200之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与电子设备1200的通信。
[0116] 电子设备1200通过传输模块170(例如Wi‑Fi模块)可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了传输模块170,但是可以理解的是,其并不属于电子设备1200的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0117] 处理器180是电子设备1200的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行电子设备1200的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;在一些实施例中,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
[0118] 电子设备1200还包括给各个部件供电的电源190,在一些实施例中,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0119] 尽管未示出,电子设备1200还可以包括摄像头(如前置摄像头、后置摄像头)、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备1200的显示单元140是触摸屏显示器,电子设备1200还包括有存储器120,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器120中,且经配置以由一个或者一个以上处理器180执行一个或者一个以上程序包含用于进行以下操作的指令:
[0120] 获取指令,用于通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
[0121] 转换指令,用于遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
[0122] 渲染指令,用于通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
[0123] 绘制指令,用于通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0124] 在一些实施例中,所述程序还包括创建指令,用于创建用于执行将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式的节点适配器,所述节点适配器中配置有用于将第一渲染节点中的渲染节点数据从第一格式转换为第二格式的转换策略,及所述第一渲染节点与转换策略之间的映射关系。
[0125] 在一些实施例中,所述程序还包括新增指令,用于在存储所述第一游戏引擎的第一脚本代码的文件夹根目录中新增空文件夹;将所述第二游戏引擎的第二脚本代码存入所述空文件夹中,同时删除所述第二脚本代码中用于执行在前端界面上渲染绘制第一待渲染对象的渲染逻辑代码。
[0126] 在一些实施例中,所述程序还包括响应指令,用于响应于针对所述目标对象在前端界面上的预设操作,记录所述目标对象受所述预设操作影响后更新的第二渲染节点;根据所述更新的第二渲染节点在第一渲染树中标记对应的第一渲染节点,同时将所述目标对象其他不受所述预设操作影响的第二渲染节点缓存到所述节点适配器中的缓存区域,以实现第二渲染节点数据在所述目标对象进行周期性渲染操作时能够被复用。
[0127] 在一些实施例中,所述程序还包括第一判断指令,用于判断所述各第一渲染节点中是否存在被标记的目标渲染节点,若存在目标渲染节点,则所述目标渲染节点中的渲染节点数据从与第一游戏引擎对应的第一格式转换为与第二游戏引擎对应的第二格式,生成第二渲染节点后缓存到所述节点适配器缓存区域中替换相应的历史的第二渲染节点。
[0128] 在一些实施例中,所述程序还包括第二判断指令,用于判断所述第一渲染节点对应所述前端界面的渲染层级关系,根据所述渲染层级关系将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;所述渲染层级关系包括所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方、或所述第一渲染节点位于预设的第三渲染节点中间,所述第三渲染节点用于渲染由所述第一游戏引擎生成的第二待渲染对象。
[0129] 在一些实施例中,所述第二判断指令,用于当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点上方、或所述第一渲染节点位于预设的第三渲染节点下方时,通过在预设的第三渲染节点上方或下方新增一个空白的第一新增节点,将所述第一渲染节点转换成第二渲染节点后新增至所述第一新增节点中,以将所述第二渲染节点新增至第二节点树中。
[0130] 在一些实施例中,所述第二判断指令,用于当所述渲染层级关系为所述第一渲染节点位于预设的第三渲染节点中间时,根据所述第三渲染节点与所述第一渲染节点之间的渲染顺序在所述第一节点树中插入空白的第二新增渲染节点;获取所述第三渲染节点的节点引用信息写入对应的所述第二新增渲染节点;遍历所述第一节点树中各渲染节点;当识别到第一渲染节点时将所述第一渲染节点转换成第二渲染节点后新增到与所述第二游戏引擎对应的第二节点树中;当识别到所述第二新增渲染节点时根据其中存储的引用信息返回对应的第三渲染节点至所述第二节点树。
[0131] 本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的对象渲染方法:
[0132] 通过第一游戏引擎对基于第二游戏引擎生成的第一待渲染对象进行加载,获取所述第一待渲染对象的第一节点树,所述第一节点树中包括第一渲染节点,所述第一渲染节点中的渲染节点数据格式为与第二游戏引擎对应的第一格式;
[0133] 遍历所述第一节点树中各第一渲染节点,将所述渲染节点数据从所述第一格式转换为与所述第一游戏引擎对应的第二格式,生成第二渲染节点;
[0134] 通过所述第一游戏引擎根据所述第二渲染节点进行渲染绘制,得到渲染数据;
[0135] 通过所述第一游戏引擎根据所述渲染数据将所述第一待渲染对象绘制在预设的前端界面上,得到渲染完成的目标对象。
[0136] 需要说明的是,对本申请所述对象渲染方法而言,本领域普通测试人员可以理解实现本申请实施例所述对象渲染方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读存储介质中,如存储在电子设备的存储器中,并被该电子设备内的至少一个处理器执行,在执行过程中可包括如所述对象渲染方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)等。
[0137] 对本申请实施例的所述对象渲染装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
[0138] 以上对本申请实施例所提供的对象渲染方法、装置、计算机可读存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
QQ群二维码
意见反馈