如何优化cocos2d-x手游内存

本文详细介绍了如何优化Cocos2d-x手游内存,重点在于图片资源的优化,包括合理利用内存、修改像素格式、批量渲染以及资源加载和卸载优化。通过合成大图、调整纹理格式和使用批量渲染技术,可以显著减少内存占用,提高游戏性能。
摘要由CSDN通过智能技术生成

内存优化

在游戏中,占用内存最多的无非就是图片资源,所以如果可以从图片资源上面进行优化,那么得到的收益将会是最大的。

资源占用
首先,先来看一下一张144X144的图片在物理磁盘上面的占用的存储空间大概是30KB,但是使用Cocos2d-x游戏引擎加载到内存里面,它需要占用至少256KB的大小。

主要的原因有以下两个:

Cocos2d-x在向手机申请纹理图片内存的时候,只能将图片的宽高尺寸以2的n次幂大小来计算。

Cocos2d-x默认的纹理深度是32位。

对于第一点,由于144并非是2的次幂数,与之相近的2的次幂数分别是128和256。如果使用128,那么申请到的内存空间显然无法存放144X144这么大的图片,那么只好使用256来进行计算,也就是Cocos2d-x会把它当成256X256大小的图片来申请空间,但是图片本身没有那么多数据,所以造成了内存空间的浪费。

关于第二点,Cocos2d-x使用32位的像素格式来保存像素信息,也就是图片上的一个像素需要占用32位(bit)。一个字节(byte)又等于8位(bit),所以一个像素需要占用4个字节(32 / 8)的大小。

所以,可以轻易的得出144X144图片占用的内存为:

【内存 = 图片的宽 X 图片的高 X 4byte】

也就是:

256 X 256 X 4 = 262144 byte

然后,1KB = 1024byte,所以它占用的内存大概是256KB(262144 / 1024)。

合理利用内存
根据上面提到的两点浪费内存的原因,我们就可以对症下药了。

对于图片尺寸导致的内存浪费问题,我们可以将很多小张的图片合成一张大张的纹理图,让大图的尺寸等于2的n次幂,这样我们就可以尽可能的去利用那些原先被浪费掉的内存。

合成大图的工具有很多,我个人比较推荐使用TexturePaker,这个工具有mac和win版本的,而且操作和界面布局基本一致。关于TexturePaker的用法,网络上面的教程很多,可以自行搜索。

这里要说的一点是Publish导出纹理集的时候要选择格式为“Cocos2d plist(*.plist)”格式 ,这样Cocos2d-x游戏引擎可以直接加载并解析。
在这里插入图片描述
导出纹理集格式

不同的设备由于设备硬件的不同,可以加载的图片的最大尺寸也不同,所以我比较建议最大的纹理集尺寸为2048X2048 ,这样可以保证在所有的主流设备上面都能够得到正确的加载。

修改像素格式
图片上面每个像素都有RGBA四个通道,RGB三个通道用于表示该像素的颜色值,A通道用于表示Alpha(透明)通道,每个通道默认使用8bit的内存来

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值