cocos2d-x3.2中如何最佳化Cocos2d-X遊戲的記憶體,cocos2dx3.0

來源:互聯網
上載者:User

cocos2d-x3.2中如何最佳化Cocos2d-X遊戲的記憶體,cocos2dx3.0

    在遊戲項目最佳化中都會碰到一個問題,如何既能減少記憶體又能盡量減少包的大小?在實際項目中有些經驗分享一下,事實上2D遊戲中最占記憶體的就是圖片資源,一張圖片使用不同的紋理格式帶來的效能差異巨大,下表是我在IOS平台一個小Demo中的測試結果,該Demo的原始記憶體佔用是7M,測試方法是一次性載入5張2048*2048的圖片,使用TexturePacker工具產生圖片,記憶體統計使用Instrument工具,載入時間統計用-X引擎提供的CCTime類,單位是微秒。

圖片格式               載入時間   記憶體佔用 備忘
png                         782080     88M         5張 2048*2048 的PNG
pvr.ccz(POT)      394769       102M        5張 2048*2048 的pvr.ccz(POT:2的整次方)
pvr.ccz(NPOT)   338099      85M          5張 2047*1680 的pvr.ccz(NPOT:非2的整次方,即圖的實際大小)
pvr(PVRTC4)     8875            33M          5張 2048*2048 的pvr(PVRTC4:壓縮比率為8:1的有損壓縮,實際測試發現畫質基本沒有損失)

結論:
1)比較載入速度:原始PNG是最慢的,使用POT的pvr.ccz大約是原始PNG的50%,使用NPOT的pvr.ccz大約是原始PNG的43%,使用pvr則只要原始PNG的1%;
2)比較記憶體佔用:使用POT的pvr.ccz大約是原始PNG的1.2倍,使用NPOT的pvr.ccz和原始PNG差不多,使用pvr只要原始PNG的40%;

從中可以看到,對於尺寸大的圖片,選擇紋理格式時,最優先使用的是PVR,其次是NPOT的pvr.ccz,考慮到多平台支援,綜合起來,對圖片資源的管理方案可以如下(以下所說圖片尺寸以iPad高清為標準):
1)對於1024*1024及以下的小圖片,還是使用PNG,因為簡單,所有平台都能用;
2)對於1024*1024以上的圖片,首選用pvr,它能直接載入到IOS裝置的顯存裡,無需經過記憶體解析,所以快;但是,遺憾1:安卓裝置不支援;遺憾2:TP工具不支援產生2048*2048以上的pvr;
3)如2所述,對於2048*2048以上的圖片,及安卓裝置,則使用NPOT的pvr.ccz,在Cocos2d-x 2.x引擎裡預設已經支援,所有3代(iphone 3GS)以後的ios設定都支援cocos2d 2.x(因為它們支援OpenGL ES2.0),所以也都能支援NPOT紋理;
4)經過測試,安卓裝置也支援NPOT,所以方案比較簡單,1024*1024及以下的用PNG,1024*1024以上的使用NPOT選項的pvr.ccz;

採用以上方案後,遊戲所佔記憶體從90多M降到了60多M,在IOS各種裝置跑過了,touch3、touch4、iPad1等低端裝置都沒問題。


不懂的可以加我的QQ群: 239982941(cocos2d-x 3.x學習群)歡迎你的到來哦,看了博文給點腳印唄,謝謝啦~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.