转 cocos2dx内存优化
cocos2dx里面,sprite本身不消耗多少内存,只是关联的材质文件消耗内存。假设有10个sprite关联同一个材质,也不会有10倍消耗。
关于图片占用的材质内存,我觉得还有好几种优化手段:
1、对于背景图,因为不需要考虑透明问题。载入材质时可以使用 RGB565 格式(5位红色,6位绿色,5位蓝色),每一个像素消耗的内存是16bit = 2byte。比默认的 RGBA8888 消耗的内存少一半。
2、大尺寸的图可以适当缩小,显示时拉伸放大。比如960x640的图可以缩小为768x512,消耗的内存减少一半。
3、有些sprite不需要那么多的色彩,可以用 RGBA4444 格式载入,一个像素也只消耗2byte,减少一半。可以用 TexturePacker 这样的工具处理原始 32bitpng 图片,生成 RGBA4444 格式的材质文件。
4、多个小图合并到一起,做成 sprite sheet,可以显著降低内存使用,性能也会好一点。
5、超大背景图裁剪成多个小块,需要显示哪个区域才载入对应的块。程序上复杂不少,但总比内存不足崩溃掉好。
以上优化方法,我个人实践下来效果还是很明显的。
1。OpenGL一般都用2的N次方贴图尺寸,所以制作贴图时使它尽量接近2的N次方值,比如128*128。如果有个切片组成的贴图尺寸是130*100,那就尝试重新排布切片,使它控制在128*128以内,这样能减少一半内存。
2。可以使用小图放大来贴,但我建议是对于背景图这样,对清晰度要求不高时,将尺寸按整数倍缩小贴图,然后贴图时采用Nearest临近差值算法,这样效果可以接受,效率又高。
3。将切片合成贴图时,要注意将使用时机和频率相当的切片放在一起,这样可以做到当前加载进内存的贴图,都是使用频率最高的。而当前不用的贴图要及时释放掉。游戏玩家一般都可以接受等待进度条加载一些东西。
4。游戏前期可以用模拟器测试,后期一定要真机+Instruments测试,Xcode的Instruments功能很强,可以检测Leak,OpenGL优化建议,Allocation等。
5。游戏注意避免在logic循环或者render循环中反复分配内存,造成恶性增长。
6。PNG要用PS针对Web压缩一下,可以缩小文件尺寸,虽然不会减少运行时内存分配,但可以减少贴图加载的IO时间
转 cocos2dx内存优化的更多相关文章
- 转 cocos2dx内存优化 (之二)
一.cocos2dx之如何优化内存使用(高级篇) 本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=93 一.内存优化原则 为了优化应用内存,你应该知道 ...
- cocos2dx内存优化
纹理消耗了大量内存 在大部分情况下,是纹理(textures)消耗了游戏程序大量的内存.因此,纹理是我们首要考虑优化的对象 纹理加载 cocos2d里面纹理加载分为两个阶段:从图片文件中创建一个Ima ...
- 转 cocos2d-x 优化(纹理渲染优化、资源缓存、内存优化)
概述 包括以下5种优化:引擎底层优化.纹理优化.渲染优化.资源缓存.内存优化 引擎优化 2.0版本比1.0版本在算法上有所优化,效率更高.2.0版本使用OpenGl ES 2.0图形库,1.0版本 ...
- 转 iOS和android游戏纹理优化和内存优化(cocos2d-x)
iOS和android游戏纹理优化和内存优化(cocos2d-x) (未完成) 1.2d游戏最占内存的无疑是图片资源. 2.cocos2d-x不同平台读取纹理的机制不同.ios下面使用CGImage, ...
- cocos2d-x如何优化内存的应用
自身以前也写过cocos2d-x如何优化内存的应用,以及内存不够的情况下怎么样处置惩罚游戏.今天在微博中看到有友好简介了下内存,挺详细的.不晓得是谁写的,我纪录下. 一,IOS与图片内存 在IOS上, ...
- cocos2d-x项目过程记录(纹理和内存优化方面)
1.参考资料:Cocos2d-x纹理优化的一些方案 cocos2d-x如何优化内存的应用 iOS和android游戏纹理优化和内存优化(cocos2d-x) 2.加载贴图集纹理 CCSpriteF ...
- 【转】cocos2d-x如何优化内存的应用
原地址:http://cblog.chinadaily.com.cn/blog-942327-4327173.html 注:自身以前也写过cocos2d-x如何优化内存的应用,以及内存不够的情况下怎么 ...
- IOS 内存优化和调试技巧
基础部分 1: 图片内存大小小结 a: 图片:是占用内存的大户,尤其是手机游戏图片资源众多.对图片资源在内存中占用量的计算成为J2ME游戏开发者的经常性工作,CoCoMo来解释一下如何计算图片在内存中 ...
- cocos2d-x 游戏优化方案
优化的方案: 引擎底层优化.纹理优化.渲染优化.资源缓存.内存优化. 纹理优化: cocos2d-x 底层是OPenGL ES实现的. 对于图案片载入的内存是2的幂次方. 使用的图片是100*128 ...
随机推荐
- 1.struts2开发流程
1下载struts包,下载地址为:http://archive.apache.org/dist/struts/library/ 2.解压后将lib下的这几个jar包放到自己写的web项目中 放到这 ...
- CentOS下使用Percona XtraBackup对MySQL5.6数据库innodb和myisam的方法
Mysql卸载从下往上顺序 [root@localhost /]# rpm -e --nodeps qt-mysql-4.6.2-26.el6_4.x86_64[root@localhost /]# ...
- git 上传本地文件到github
git 上传本地文件到github 1 git config --global user.name "Your Real Name" 2 git config --global u ...
- GDCPC2016 省赛随笔
这是第一次参加省赛,第二次参加正式的组队赛. 昨晚很早就睡,早上挺早就睡不着醒了,内心既紧张又激动(虽然赛前和队友说尽力就好,但是还是很怕打铁啊).然后吃过早餐跟随学校大部队来到了中大.发现有好多学校 ...
- northwind数据库介绍
① Categories: 种类表相应字段:CategoryID :类型ID:CategoryName:类型名;Description:类型说明;Picture:产品样本 ② CustomerCust ...
- [Ogre][地形][原创]基于OgreTerrain的地形实现
需要用到的外部图片资源: 在ogre调用时需要多用到的几个外部dll: OgreTerrain_d.dll 需要添加头文件 #include "Ogre\Ogre.h"#inclu ...
- [C++][重载]
运算符重载 C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作.例如: class complex { public: complex(d ...
- linux文件描述符--转载
转自:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录 ...
- mysql replication之binlog-do-db、binlog-ignore-db
再次整理管理mysql复制的资料,一直搞不明白为什么mysql的启动参数里面有两个binlog-do-db.binlog-ignore-db 这次仔细的阅读了mysql的帮助手册,整理一下对于一条语句 ...
- java 学习路线《转》
*第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架: *第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及: *第三阶段 ...