最近,我們與ChukongTechnologie合作,開發(fā)Cocos2d-x游戲引擎。我們將對(duì)此更新一系列相關(guān)文章,本文是第一篇。本文中,我將簡(jiǎn)單概述基于圖形演示即Fantasy Warrior 3D的Cocos2d-x的分析和優(yōu)化過程。
何為Cocos2d-x?
Cocos2d-x是一套用C++編寫的開源及跨平臺(tái)游戲開發(fā)工具。其引擎是世界上最流行的開源游戲引擎,且根據(jù)最新的AppBrain數(shù)據(jù),這也是Google Play使用的繼Unity之后第二大流行的游戲引擎。
引擎歷來都是2 D。然而過去幾年里,ChukongDUI1引擎多元化,并添加3 D渲染來擴(kuò)充其廣受歡迎的2 D工具集。
何為Fantasy Warrior 3D?
Fantasy Warrior 3D是一款使用Cocos2d-x 3.4的展示項(xiàng)目。其在Cocos2d-x中是導(dǎo)入演示,覆蓋了多個(gè)3D核心功能:
? Sprite3D
? 動(dòng)畫3D
? 網(wǎng)格
? 布告板
? 攝像機(jī)
? 燈光
? 新音頻引擎
其主要目的是向開發(fā)者展示如何使用Cocos2d-x創(chuàng)建3D游戲,且其是一個(gè)理想的開端,可對(duì)使用Cocos2d-x及PowerVR SDK工具集而創(chuàng)建的圖形應(yīng)用程序進(jìn)行優(yōu)化。
其代碼放在GitHub上,且在MIT許可證下進(jìn)行分配:
https://github.com/chukong/SampleGame-FantasyWarrior3D
PowerVR GPU架構(gòu)概述
首先,讓我們?yōu)g覽一下PowerVR TBDR架構(gòu)。
該架構(gòu)有兩個(gè)主要特點(diǎn):鑲嵌和延遲渲染。
鑲嵌是用于提高顯示器上圖像渲染效率的過程。它將幾何數(shù)據(jù)分為小的矩形區(qū)域,這些矩形區(qū)將顯示為一個(gè)圖像,即拼貼。
分別對(duì)每個(gè)拼貼進(jìn)行柵格化和加工。長(zhǎng)遠(yuǎn)來看,這對(duì)處理能力的需求更低,這是因?yàn)镚PU可以使用片上緩沖對(duì)顏色、深度和模板緩沖區(qū)進(jìn)行讀取-修改-編寫操作,而不是在系統(tǒng)內(nèi)存中收發(fā)數(shù)據(jù)而浪費(fèi)帶寬。
延遲的情況下,有一個(gè)隱藏面消除(HSR)的過程,可以完全排除透支。
在典型的IMR架構(gòu)中,上方顯示的場(chǎng)景為紅色和紫色,但即使被接近的形狀弄得含糊不清,場(chǎng)景的顏色也可以被計(jì)算。不過,我們的架構(gòu)可以在著色器操作之前確定不透明片段的能見度,這可使GPU放棄所有片段的著色操作,不產(chǎn)生最終的圖像顏色。排除多余的片段著色操作可以節(jié)省時(shí)間和處理功率。若您對(duì)TBDR感興趣,可點(diǎn)擊此處獲取更多資訊。
分析圖像處理器
為獲得最佳性能,開始分析時(shí)需遵循三個(gè)原則。
? 使用合適的工具對(duì)性能進(jìn)行分析,然后使用分析數(shù)據(jù)來識(shí)別瓶頸問題
? 找出應(yīng)用程序中的瓶頸所在
? 修改程序,消除瓶頸問題
例如,如果有尚未壓縮的紋理文件,而您又想減少內(nèi)存帶寬,您需要壓縮紋理文件才能獲得更好的性能。
常被忽略的一大重要要素是,可以完成整個(gè)周期并回到第一步,再運(yùn)用分析工具來驗(yàn)證性能是否已經(jīng)改善。這樣進(jìn)行回歸分析,便不必再在應(yīng)用程序中植入漏洞,避免性能損耗。
以下為完成上述步驟可使用的免費(fèi)工具。
用于性能分析的PowerVR圖像工具集
我們PowerVR工具和SDK可以為開發(fā)人員提供分析和調(diào)試工具。包括:
? PVRTune (圖形核心性能分析工具)
? PVRTrace (OpenGL ES分析工具)
? PVRMonitor (Android應(yīng)用程序,可查看實(shí)時(shí)硬件性能統(tǒng)計(jì)數(shù)據(jù))
? PVRScope (在應(yīng)用程序中集成PVRTune功能的工具)
? PVRShaderEditor(著色器代碼優(yōu)化工具)。
PVRTune
PVRTune是一個(gè)實(shí)時(shí)硬件性能分析軟件。它在設(shè)備上實(shí)時(shí)運(yùn)行,讓您可以看到所有來自GPU的數(shù)據(jù),如定時(shí)數(shù)據(jù)。它還使您可以快速查看CPU和GPU性能,有助于緩解性能瓶頸。
結(jié)合PVRTrace記錄庫(kù),PVRTune可以捕獲OpenGL ES API使用數(shù)據(jù),如API調(diào)用時(shí)間和計(jì)數(shù)器(如,已提交的每幀的三角形數(shù)量和每幀的紋理修改數(shù)量)。PVRTrace庫(kù)還允許用戶實(shí)時(shí)修改OpenGL ES渲染狀態(tài),如使所有紋理樣本使用存儲(chǔ)在圖形核心緩存區(qū)的2×2圖像。
想了解更多PVRTune資訊,請(qǐng)點(diǎn)擊此處。
PVRTrace
PVRTrace是OpenGL ES調(diào)用記錄庫(kù)和實(shí)用程序。該工具可以攔截OpenGL ES調(diào)用,并保存到一個(gè)文件中,保存的調(diào)用可以在其他設(shè)備或臺(tái)式機(jī)上運(yùn)行。這樣,便可以集中關(guān)注應(yīng)用程序的圖形API調(diào)用,而不用花費(fèi)精力研究應(yīng)用程序的渲染引擎代碼。
記錄可以在其他設(shè)備的Linux系統(tǒng)、Windows等上運(yùn)行,以確定其在哪些系統(tǒng)中可以運(yùn)行。PVRTrace也是一個(gè)圖形用戶界面(GUI),可以分析API調(diào)用流,并允許以用戶友好的方式對(duì)調(diào)用進(jìn)行簡(jiǎn)單的檢測(cè)。該工具一個(gè)強(qiáng)大的功能便是靜態(tài)分析,可以反饋API中的錯(cuò)誤信息,如哪些未壓縮紋理已經(jīng)被使用。
想了解更多PVRTrace資訊,請(qǐng)點(diǎn)擊此處。
PVRMonitor
此工具是Android應(yīng)用程序,可以查看實(shí)時(shí)硬件性能統(tǒng)計(jì)數(shù)據(jù)。統(tǒng)計(jì)數(shù)據(jù)顯示信息有關(guān)CPU上的處理器使用情況和PowerVR圖形硬件,對(duì)性能的影響可以忽略不計(jì)。
數(shù)據(jù)展現(xiàn)形式為條形圖,可以實(shí)時(shí)更新,并覆蓋整個(gè)正在運(yùn)行的應(yīng)用程序。
想了解更多PVRMonitor資訊,請(qǐng)點(diǎn)擊此處。
預(yù)告內(nèi)容和擴(kuò)展閱讀
下一篇文章中,我將闡釋如何使用上述工具來分析參考設(shè)備上Fantasy Warrior 3D的性能。
以下有關(guān)此類優(yōu)化系列的文章,請(qǐng)供參考:
? 分析和調(diào)試PowerVR圖形工具
? PowerVR圖形SDK工具說明:PVRTune GUI基礎(chǔ)
? PowerVR圖形SDK工具說明:使用PVRTune分析渲染
? PowerVR圖形SDK工具說明:PVRTraceGUI基礎(chǔ)
? PowerVR圖形SDK工具說明:使用PVRTrace獲取渲染
? PowerVR圖形SDK工具說明:PVRTraceGUI的高級(jí)性能
? PVRTraceGUI內(nèi)的規(guī)則表達(dá)式搜索
評(píng)論
查看更多