创建一个新的sprite 常用方法 有三种:
1、直接使用图片生成:create('hello.png');
2、使用纹理生成:createWithTexture(texture);
3、使用精灵帧缓存生成:createWithSpriteFrame( *spriteFrame);
以上三种 生成sprite的方式:本质上最终都是先生成图片的纹理 即texture,
再设置图片纹理,initWithTexture(texture)生成sprite;
以上:所以在new 一个精灵时,消耗的内存是:加载的image + texture ,即二倍的图片大小内存;
过程:================================================================================
在cocos中,谈谈不同纹理实际加载过程中内存变化,先以一张1024*1024 本身大小500k的jpg/png图片为例:
1,读取图片文件(500k)
2,把jpg/png数据最终都是按RGBA8888(默认)格式解析(4mb)
3,释放500k的图片内存
4,上传给OpenGL纹理数据(4mb)
5,释放4mb内存
=====================================================================================
减小包体大小:1、图片压缩,tinypng; 2、使用小图,精灵九宫格;3、使用压缩图集 1024*1024 NPOT
减少内存压力:
1、一帧一帧载入游戏资源
2、减少绘制调用,打包大图
3、载入纹理时按照从大到小的顺序
4、使用载入屏幕预载入游戏资源
5、需要时释放空闲资源(看不见的界面,隐藏或者清除)
6、使用纹理打包器优化纹理大小、格式、颜色深度等
7、使用JPG格式要谨慎!(静态的背景图可用)
8、请使用RGB4444颜色深度16位纹理(Texture2D setDefaultAlphaPixelFormat)
9、请使用NPOT纹理,不要使用POT纹理
10、避免载入超大纹理
11、推荐1024*1024 NPOT pvr.ccz纹理集,而不要采用RAW PNG纹理
【问:如果我用16位的纹理,我游戏载入速度是不是会更快呢?】
答: 纹理像素格式和你游戏的加载时间没半毛钱关系。。。。。。像素格式用来管理图像在GPU内存中的存储方式。如果你想要更快的加载时间,你应该 减少你.PNG /的GIF / TIFF / TMP图像文件的大小。