最近,我们与ChukongTechnologie合作,开发Cocos2d-x游戏引擎。我们将对此更新一系列相关文章,本文是第一篇。本文中,我将简单概述基于图形演示即Fantasy Warrior 3D的Cocos2d-x的分析和优化过程。
何为Cocos2d-x?
Cocos2d-x是一套用C++编写的开源及跨平台游戏开发工具。其引擎是世界上最流行的开源游戏引擎,且根据最新的AppBrain数据,这也是Google Play使用的继Unity之后第二大流行的游戏引擎。
引擎历来都是2 D。然而过去几年里,ChukongDUI1引擎多元化,并添加3 D渲染来扩充其广受欢迎的2 D工具集。
何为Fantasy Warrior 3D?
Fantasy Warrior 3D是一款使用Cocos2d-x 3.4的展示项目。其在Cocos2d-x中是导入演示,覆盖了多个3D核心功能:
? Sprite3D
? 动画3D
? 网格
? 布告板
? 摄像机
? 灯光
? 新音频引擎
其主要目的是向开发者展示如何使用Cocos2d-x创建3D游戏,且其是一个理想的开端,可对使用Cocos2d-x及PowerVR SDK工具集而创建的图形应用程序进行优化。
其代码放在GitHub上,且在MIT许可证下进行分配:
https://github.com/chukong/SampleGame-FantasyWarrior3D
PowerVR GPU架构概述
首先,让我们浏览一下PowerVR TBDR架构。
该架构有两个主要特点:镶嵌和延迟渲染。
镶嵌是用于提高显示器上图像渲染效率的过程。它将几何数据分为小的矩形区域,这些矩形区将显示为一个图像,即拼贴。
分别对每个拼贴进行栅格化和加工。长远来看,这对处理能力的需求更低,这是因为GPU可以使用片上缓冲对颜色、深度和模板缓冲区进行读取-修改-编写 *** 作,而不是在系统内存中收发数据而浪费带宽。
延迟的情况下,有一个隐藏面消除(HSR)的过程,可以完全排除透支。
在典型的IMR架构中,上方显示的场景为红色和紫色,但即使被接近的形状弄得含糊不清,场景的颜色也可以被计算。不过,我们的架构可以在着色器 *** 作之前确定不透明片段的能见度,这可使GPU放弃所有片段的着色 *** 作,不产生最终的图像颜色。排除多余的片段着色 *** 作可以节省时间和处理功率。若您对TBDR感兴趣,可点击此处获取更多资讯。
分析图像处理器
为获得最佳性能,开始分析时需遵循三个原则。
? 使用合适的工具对性能进行分析,然后使用分析数据来识别瓶颈问题
? 找出应用程序中的瓶颈所在
? 修改程序,消除瓶颈问题
例如,如果有尚未压缩的纹理文件,而您又想减少内存带宽,您需要压缩纹理文件才能获得更好的性能。
常被忽略的一大重要要素是,可以完成整个周期并回到第一步,再运用分析工具来验证性能是否已经改善。这样进行回归分析,便不必再在应用程序中植入漏洞,避免性能损耗。
以下为完成上述步骤可使用的免费工具。
用于性能分析的PowerVR图像工具集
我们PowerVR工具和SDK可以为开发人员提供分析和调试工具。包括:
? PVRTune (图形核心性能分析工具)
? PVRTrace (OpenGL ES分析工具)
? PVRMonitor (Android应用程序,可查看实时硬件性能统计数据)
? PVRScope (在应用程序中集成PVRTune功能的工具)
? PVRShaderEditor(着色器代码优化工具)。
PVRTune
PVRTune是一个实时硬件性能分析软件。它在设备上实时运行,让您可以看到所有来自GPU的数据,如定时数据。它还使您可以快速查看CPU和GPU性能,有助于缓解性能瓶颈。
结合PVRTrace记录库,PVRTune可以捕获OpenGL ES API使用数据,如API调用时间和计数器(如,已提交的每帧的三角形数量和每帧的纹理修改数量)。PVRTrace库还允许用户实时修改OpenGL ES渲染状态,如使所有纹理样本使用存储在图形核心缓存区的2×2图像。
想了解更多PVRTune资讯,请点击此处。
PVRTrace
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)