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(右)的区别:


Cocos2dx内存优化相关记录_第1张图片
test.png

有时间再整理

你可能感兴趣的:(Cocos2dx内存优化相关记录)