Cocos2d-x --内存优化二之图片资源管理方案
来源:互联网 发布:我做淘宝客怎么找商家 编辑:程序博客网 时间:2024/06/15 07:54
2D游戏中最占内存的就是图片资源了,在实际项目中发现图片使用不同的纹理格式带来的性能差异巨大,下表是我在IOS平台一个小Demo中的测试结果,该Demo的原始内存占用是7M,测试方法是一次性加载5张2048*2048的图片,使用TexturePacker工具生成图片,内存统计使用Instrument工具,加载时间统计用-X引擎提供的CCTime类,单位是微秒。
图片格式 加载时间 内存占用 备注
png 782080 88M 5张 2048*2048 的PNG
pvr.ccz(POT) 394769 102M 5张 2048*2048 的pvr.ccz(POT:2的整次方)
pvr.ccz(NPOT) 338099 85M 5张 2047*1680 的pvr.ccz(NPOT:非2的整次方,即图的实际大小)
pvr(PVRTC4) 8875 33M 5张 2048*2048 的pvr(PVRTC4:压缩比率为8:1的有损压缩,实际测试发现画质基本没有损失)
结论:
1)比较加载速度:原始PNG是最慢的,使用POT的pvr.ccz大约是原始PNG的50%,使用NPOT的pvr.ccz大约是原始PNG的43%,使用pvr则只要原始PNG的1%;
2)比较内存占用:使用POT的pvr.ccz大约是原始PNG的1.2倍,使用NPOT的pvr.ccz和原始PNG差不多,使用pvr只要原始PNG的40%;
从中可以看到,对于尺寸大的图片,选择纹理格式时,最优先使用的是PVR,其次是NPOT的pvr.ccz,考虑到多平台支持,综合起来,对图片资源的管理方案可以如下(以下所说图片尺寸以iPad高清为标准):
1)对于1024*1024及以下的小图片,还是使用PNG,因为简单,所有平台都能用;
2)对于1024*1024以上的图片,首选用pvr,它能直接载入到IOS设备的显存里,无需经过内存解析,所以快;但是,遗憾1:安卓设备不支持;遗憾2:TP工具不支持生成2048*2048以上的pvr;
3)如2所述,对于2048*2048以上的图片,及安卓设备,则使用NPOT的pvr.ccz,在Cocos2d-x 2.x引擎里默认已经支持,所有3代(iphone 3GS)以后的ios设置都支持cocos2d 2.x(因为它们支持OpenGL ES2.0),所以也都能支持NPOT纹理;
4)安卓设备是否支持NPOT还需经过测试(前面版本已经使用过了POT的pvr.ccz没问题)。如果支持,则方案比较简单,1024*1024及以下的用PNG,1024*1024以上的使用NPOT选项的pvr.ccz;
采用以上方案后,游戏所占内存从90多M降到了60多M,在IOS各种设备跑过了,touch3、touch4、iPad1等低端设备都没问题。
- Cocos2d-x --内存优化二之图片资源管理方案
- 【Cocos2d-x 013】 cocos2dx内存优化 (之二)
- cocos2d-x 内存优化
- cocos2d-x内存优化
- cocos2d-x内存优化
- Cocos2d-X 内存优化
- cocos2d-x ----内存优化
- Cocos2d-x 内存优化
- cocos2d-x图片内存
- cocos2d-x --内存优化之使用16位纹理/NPOT
- cocos2d-x 游戏优化方案
- cocos2d-x程序内存优化
- cocos2d-x 内存优化之prv.ccz plist 文件加载
- android内存优化之二加载图片内存优化
- cocos2d-x 内存管理二
- cocos2d-x 内存管理二
- Cocos2d-x纹理优化的一些方案
- Cocos2d-x纹理优化的一些方案
- Android 代码混淆 防止反编译
- IOS7风格弹出框-支持block回调
- unix下解决服务器产生大量close_wait问题
- iOS- 详解文本属性Attributes
- GCC 函数追踪功能
- Cocos2d-x --内存优化二之图片资源管理方案
- nyoj19擅长排列的小明(STL)&&(DFS)
- hreadTask.access$1
- ASNI 、Smalltalk 等概念
- 黑马程序员——OC语言三大特性
- android studio 迁移 问题
- mysql索引的创建,查看和删除
- 学习iOS设计----iOS8的颜色、文字和布局学习
- Error1error C1189: #error : MFC does not support WINVER less than 0x0501. Please change the defi