这里的优化停留在客户端等级。
图片是怎样存在于内存中的、优化方式
大多数情况下,排除内存泄漏的情况,手机内存是被纹理(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(右)的区别:
有时间再整理