如何優化Cocos2d X遊戲的記憶體

2021-06-18 10:35:53 字數 1384 閱讀 1160

在遊戲專案優化中都會碰到乙個問題,如何既能減少記憶體又能儘量減少包的大小?在實際專案中有些經驗分享一下,事實上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等低端裝置都沒問題。

(**:

如何優化Cocos2d X遊戲的記憶體

published on 2013 年 2 月 4 日,by donglin in ios技術,遊戲引擎.在遊戲專案優化中都會碰到乙個問題,如何既能減少記憶體又能儘量減少包的大小?在實際專案中有些經驗分享一下,事實上2d遊戲中最佔記憶體的就是資源,一張使用不同的紋理格式帶來的效能差異巨大,下表是我在...

如何優化Cocos2d X遊戲的記憶體

在遊戲專案優化中都會碰到乙個問題,如何既能減少記憶體又能儘量減少包的大小?在實際專案中有些經驗分享一下,事實上2d遊戲中最佔記憶體的就是資源,一張使用不同的紋理格式帶來的效能差異巨大,下表是我在ios平台乙個小demo中的測試結果,該demo的原始記憶體占用是7m,測試方法是一次性載入5張2048 ...

cocos2d x 遊戲優化方案

優化的方案 引擎底層優化 紋理優化 渲染優化 資源快取 記憶體優化.紋理優化 cocos2d x 底層是opengl es實現的。對於圖案片載入的記憶體是2的冪次方。使用的是100 128 會被轉為128 128。如此浪費一定的空間。色深優化 png a8r8g8b8 a1r5g5b5 argb44...