1. 程式人生 > >cocos2dx 圖片記憶體優化之從200M到50M

cocos2dx 圖片記憶體優化之從200M到50M

公司專案曾經出過一個非常牛逼的問題,由於我感覺一個手機數百M記憶體,怎麼還能不夠用??以至於後來導致遊戲卡到爆,卡到我內心萬馬奔騰的時候我決定,我要優化記憶體。
不過程式碼都寫了如果要動程式碼那我真心日了狗了,所以一切目標就朝著不動程式碼,只動資源去
在網上翻閱了各種博文,各種測試,終於整理出一套方法,將原來的兩百五十兆記憶體狂降到50兆。其實方法很簡單,只用到了texturepacker,做幾個設定就可以了,都怪我見到東西就直接用,總是忽略軟體的其他功能。。。
說正題:
1.將texturePacker的匯出格式設定為pvr.ccz
    why?pvr格式載入快啊,比png要省去很多中間步驟啊,而且支援圖片加密,ios和android都支援,後面的操作都要基於pvr了
2.premultiply alpha 設定為true
why?no why!!just do it,當然程式碼中也要把image的premultiply alpha設為true,否則透明通道會出問題
3.image format設定為rgba4444
why?rgba4444的顏色用16位儲存,直接就降掉一半記憶體如果圖片沒有透明畫素的話就用rgba565顏色不會有失真。rgba4444顏色失真怎麼辦?接著往下看
4.dithering 設定為floydSteinbergAlpha,這樣就會為rgba4444提供渲染優化,使失真不容易看得出來,如果不是對畫質有苛刻的要求的話,真的看不出來
5.size constraints設定為any size 
why?貼圖的大小都是2的整數次冪,這樣會造成非常大的記憶體浪費,但是pvr不需要這樣的,設定為any size 就是多大都可以,很多情況下可以節省出一半的記憶體
好了,該設定的都設定了,接著匯出的貼圖記憶體佔用大家一看就明白了,節省4分之三的記憶體一點都不誇張。