Cocos2dx內存優化相關記錄

這里的優化停留在客戶端等級。
圖片是怎樣存在于內存中的、優化方式

大多數情況下,排除內存泄漏的情況,手機內存是被紋理(texture)占用。

默認情況下,在cocos里加載一張圖片,每一個像素點使用4個byte來表示1個byte(8位)代表red,另外3個byte分別代表green、blue和alpha透明通道。這個就簡稱RGBA8888.

舉例來說,一張1136x640的背景圖占用的內存為 1024x1024x4(byte) / (1024*1024) = 4 MB

RGBA4444每一個像素點占用2個byte。因為1個byte(8位),r 4位、g 4位、b 4位、a 4位,一共是2個byte。

舉例來說,一張1136x640的背景圖占用的內存為 1024x1024x2(byte) / (1024*1024) = 2 MB

但是RGBA4444會是圖片質量下降。然后需要注意cocos默認加載方式是RGBA8888,如果部分圖片為RGBA4444,需要設置PixelFormat。如下:

    Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444);
    SpriteFrameCache::getInstance()->addSpriteFramesWithFile("hall.plist", "hall.png");
    Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888);

下面是使用RGBA8888(左)和RGBA4444(右)的區別:


test.png

有時間再整理

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容