3d游戏渲染引擎的资源管理方法

文档序号:9432388阅读:911来源:国知局
3d游戏渲染引擎的资源管理方法
【技术领域】
[0001]本发明涉及3D游戏渲染引擎,尤其涉及一种轻量高效的3D游戏渲染引擎的资源管理方法。
【背景技术】
[0002]3D游戏渲染引擎,是各类程序系统中的一类,相对于绝大部分其他程序系统,它需要高频率地执行大规模的复杂计算,耗能高,因此需要基于合理的管控系统来实现3D游戏渲染引擎。
[0003]市面上各种3D图像渲染引擎很多,其中,Flash Stage3D是跨平台的系统,可以运行在PC、网页、移动端等。3D图形渲染系统是通过实时计算来动态生成图像,而这其中的3D游戏渲染引擎是通过GPU实时运算来实时呈现不同时间点不同视角的各种游戏画面,以便让游戏玩家感觉置身其中,因此其对于系统动态运行的性能要求比较苛刻。
[0004]3D游戏渲染系统要求能尽量快的计算出尽量丰富的画面,以保证玩家的视觉体验和交互体验。一个游戏启动之后,玩家可能会持续玩很长时间,经历不同的内容,因此系统稳定性是一个重要的需求。良好的效能和稳定性是建立在良好的系统结构和运行机制基础上的。对于游戏渲染程序系统而言,需要不停的通过代码来操作CPU、内存、GPU这些相关的硬件,因此完成相同的任务,操作越少,效能就越高。操作少就是耗能少,由此可以说,优秀的系统就是能量利用率高的系统。
[0005]现有技术中,基于Flash Stage3D的引擎市面上现有不少,例如:Away3D、Flare3D、Minko、Alternativa3D 这四个引擎。
[0006]Away3D引擎开源,其系统结构完善但是运行机制繁冗,不能达到高性能。运行时产生的大量冗余对象和冗余计算,随着游戏运行的时间增加会逐渐消耗掉越来越多的内存以及CPU性能。
[0007]Flare3D引擎不开源,其为商业引擎,能实现的画面效果颇多,引擎体系结构复杂,但是用于游戏中的大规模实施渲染性能平平,其没有深入的考虑运行时资源问题,运行时性能无法达到一个新的高度。
[0008]Minko引擎开源,能实现颇多的画面效果,系统结构合理,只是没有考虑有效的运行时资源管理,而且冗余对象会在运行时也会大量产生,所以无法作为真正意义上的游戏引擎。
[0009]Alternativa3D结构完善,可以实现颇多的渲染效果,它是以游戏引擎为最终目的来实现的。只是引擎本身并没有完全封装运行时资源管理机制,依旧需要用户来做比较多的资源管理的底层工作。

【发明内容】

[0010]本发明要解决的技术问题是如何提高资源利用率。
[0011]为了解决这一技术问题,本发明提供了一种3D游戏渲染引擎的资源管理方法,包括:
[0012]在进行渲染计算和渲染时,统一调配管理运行时建构出来的内存资源、显存资源以及从外部加载的原始静态资源,使得其中的数据资源在未被销毁前能被引用和使用到所有显示对象中;且使得:
[0013]当其中某个或某些数据资源在预设的第一时间内未被引用和使用时,相应的数据资源被放至相应的待销毁队列中;
[0014]待销毁队列中的数据资源经过预设的第二时间后即被销毁;若在第二时间内又被引用或使用,则将相应的数据资源从所述待销毁队列中移除。
[0015]可选的,在销毁数据资源时,优先销毁显存资源数据和外部加载的非共享原始静态资源,内存资源数据次之,最后是外部加载的共享原始静态资源数据。
[0016]可选的,在渲染中,还包括:
[0017]依据当下所需的逻辑以及输入的变化更新各显示对象的静态数据和/或动态数据,将更新后的所述静态数据和/或动态数据传至GPU或用于CPU计算的内存;
[0018]所述GPU和CPU响应更新后的所述静态数据和/或动态数据,做渲染前置计算,进而所述GPU以渲染前置计算的结果以及已确定的渲染场景、渲染层、渲染节点、渲染树以及渲染单元进行每一帧3D图像中的各显示对象的渲染。
[0019]可选的,在渲染前,还包括:
[0020]将显示对象加入渲染场景中,为各显示对象准备静态数据和初始的动态数据;
[0021]得到所述显示对象的若干渲染单元;
[0022]将所述渲染单元加入到对应的渲染层中,生成渲染节点,确定各渲染层的渲染树。
[0023]可选的,得到所述显示对象的若干渲染单元后,还包括对所述渲染单元依据功能做分类的过程;将同一类别的渲染单元合并,再加入到对应的渲染层中。
[0024]可选的,所述显示对象包括不需要矩阵运算的基础显示对象和需要矩阵运算的高级显示对象,所述CPU用以对所述高级显示对象对应的静态数据和/或动态数据进行渲染前置计算;所述GPU用以对所述基础显示对象对应的静态数据和/或动态数据进行渲染前置计算。
[0025]可选的,在进行渲染计算和渲染时,针对每一帧3D图像:
[0026]若其中的静态数据和/或动态数据已经完成过渲染前置计算,则不再对其进行再一次的渲染前置计算,采用已计算出的结果进行渲染。
[0027]可选的,对其中的静态数据和/或动态数据完成渲染前置计算后,还将此计算的结果存放,并将其标注为无需再次更新操作的状态;否则将其标注为需要再次更新操作状态,然后在该帧3D图像渲染的后续处理中依据相应的状态标注判断是否进行渲染前置计笪并ο
[0028]本发明认为,对于实现高效的程序系统有以下普适原则:
[0029]i)运行时程序代码对象能不创建就不创建。
[0030]ii)运行时程序代码逻辑能不执行逻辑计算就不执行。
[0031]iii)运行时程序代码对象能不销毁就不销毁。
[0032]通过这个普适原则,实现最大限度的重复使用现有结果,以便减少冗余操作。要达到这个目的就需要引擎程序系统中有严格的运行时资源管理机制。在3D游戏渲染引擎系统中,运行时资源这个概念包含了逻辑对象、数据对象、加载到内存中的外部资源、上传到显卡中的显存资源,以及被执行的逻辑计算等。
[0033]管理好运行时资源,才能实现上述三原则。因此实现3D游戏渲染引擎,系统结构和运行时机制要优先考虑资源的良好管控。有了这个基础,实现具体的游戏功能就方便很多。
[0034]基于该认识,本发明至少做了以下改进:
[0035]通过资源管理模块对内存、显存以及外部加载的原始静态资源的统一管理,在引擎中整合完善的运行时资源管控机制,让上层开发者不用再处理引擎中的这类问题;
[0036]进一步在本发明可选的方案中,还通过对渲染流程的优化,尽量减少了运行时不必要的渲染操作,以提高资源的利用率。
【附图说明】
[0037]图1和图2是本发明一实施例中资源管理的流程示意图;
[0038]图3是本发明一可选实施例中渲染流程基本逻辑的示意图;
[0039]图4是本发明一可选实施例中将所述渲染单元分类并加入到对应的渲染层的示意图;
[0040]图5是本发明一实施例中渲染中流程的示意图;
[0041]图6是本发明一实施例中显示对象的示意图;
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1