分析和优化使用PowerVR GPU的Cocos2d-x游戏引擎

最近,我们与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工具集而创建的图形应用程序进行优化。

Cocos2d-x创建3D游戏

其代码放在GitHub上,且在MIT许可证下进行分配:
https://github.com/chukong/SampleGame-FantasyWarrior3D

PowerVR GPU架构概述

首先,让我们浏览一下PowerVR TBDR架构。

PowerVR TBDR架构

该架构有两个主要特点:镶嵌和延迟渲染。
镶嵌是用于提高显示器上图像渲染效率的过程。它将几何数据分为小的矩形区域,这些矩形区将显示为一个图像,即拼贴。

镶嵌和延迟渲染

分别对每个拼贴进行栅格化和加工。长远来看,这对处理能力的需求更低,这是因为GPU可以使用片上缓冲对颜色、深度和模板缓冲区进行读取-修改-编写操作,而不是在系统内存中收发数据而浪费带宽。

延迟的情况下,有一个隐藏面消除(HSR)的过程,可以完全排除透支。

延迟

在典型的IMR架构中,上方显示的场景为红色和紫色,但即使被接近的形状弄得含糊不清,场景的颜色也可以被计算。不过,我们的架构可以在着色器操作之前确定不透明片段的能见度,这可使GPU放弃所有片段的着色操作,不产生最终的图像颜色。排除多余的片段着色操作可以节省时间和处理功率。若您对TBDR感兴趣,可点击此处获取更多资讯。

分析图像处理器

为获得最佳性能,开始分析时需遵循三个原则。

• 使用合适的工具对性能进行分析,然后使用分析数据来识别瓶颈问题
• 找出应用程序中的瓶颈所在
• 修改程序,消除瓶颈问题

例如,如果有尚未压缩的纹理文件,而您又想减少内存带宽,您需要压缩纹理文件才能获得更好的性能。

常被忽略的一大重要要素是,可以完成整个周期并回到第一步,再运用分析工具来验证性能是否已经改善。这样进行回归分析,便不必再在应用程序中植入漏洞,避免性能损耗。

以下为完成上述步骤可使用的免费工具。

用于性能分析的PowerVR图像工具集

我们PowerVR工具和SDK可以为开发人员提供分析和调试工具。包括:

• PVRTune (图形核心性能分析工具)
• PVRTrace (OpenGL ES分析工具)
• PVRMonitor (Android应用程序,可查看实时硬件性能统计数据)
• PVRScope (在应用程序中集成PVRTune功能的工具)
• PVRShaderEditor(着色器代码优化工具)。

PVRTune

PVRTune是一个实时硬件性能分析软件。它在设备上实时运行,让您可以看到所有来自GPU的数据,如定时数据。它还使您可以快速查看CPU和GPU性能,有助于缓解性能瓶颈。

PVRTune

结合PVRTrace记录库,PVRTune可以捕获OpenGL ES API使用数据,如API调用时间和计数器(如,已提交的每帧的三角形数量和每帧的纹理修改数量)。PVRTrace库还允许用户实时修改OpenGL ES渲染状态,如使所有纹理样本使用存储在图形核心缓存区的2×2图像。

想了解更多PVRTune资讯,请点击此处。

PVRTrace

PVRTrace是OpenGL ES调用记录库和实用程序。该工具可以拦截OpenGL ES调用,并保存到一个文件中,保存的调用可以在其他设备或台式机上运行。这样,便可以集中关注应用程序的图形API调用,而不用花费精力研究应用程序的渲染引擎代码。

PVRTrace

记录可以在其他设备的Linux系统、Windows等上运行,以确定其在哪些系统中可以运行。PVRTrace也是一个图形用户界面(GUI),可以分析API调用流,并允许以用户友好的方式对调用进行简单的检测。该工具一个强大的功能便是静态分析,可以反馈API中的错误信息,如哪些未压缩纹理已经被使用。

想了解更多PVRTrace资讯,请点击此处。

PVRMonitor

此工具是Android应用程序,可以查看实时硬件性能统计数据。统计数据显示信息有关CPU上的处理器使用情况和PowerVR图形硬件,对性能的影响可以忽略不计。

PVRMonitor

数据展现形式为条形图,可以实时更新,并覆盖整个正在运行的应用程序。

想了解更多PVRMonitor资讯,请点击此处。

预告内容和扩展阅读

下一篇文章中,我将阐释如何使用上述工具来分析参考设备上Fantasy Warrior 3D的性能。

以下有关此类优化系列的文章,请供参考:

• 分析和调试PowerVR图形工具
• PowerVR图形SDK工具说明:PVRTune GUI基础
• PowerVR图形SDK工具说明:使用PVRTune分析渲染
• PowerVR图形SDK工具说明:PVRTraceGUI基础
• PowerVR图形SDK工具说明:使用PVRTrace获取渲染
• PowerVR图形SDK工具说明:PVRTraceGUI的高级性能
• PVRTraceGUI内的规则表达式搜索

原文链接:
http://blog.imgtec.com/powervr/optimizing-cocos2d-x-game-engine-powervr

声明:
本文为原创文章,转载需注明作者、出处及原文链接,否则,本网站将保留追究其法律责任的权利

--电子创新网--
粤ICP备12070055号