手游(cocos2dx)图片资源压缩

最好的减少资源方式当然是从设计上避免。比如:
1. 减少帧动画的使用(这也是骨骼动画大行其道的原因)。
2. 尽量复用资源(比如九宫格技术,角色间通用特效,肉眼排查,等等)
3. 不得不使用帧动画的场合,考虑在某些场景下使用15fps或更低的帧率制作动画减少图量(比如UI界面上的特效)。

RGBA8888,每个像素4个字节,无压缩,效果最好!用于需要拉伸的元素,对细节要求高的图标,原画等。
RGBA565,每个像素2个字节,用于没有alpha通道的纹理,如地图背景。
RGBA4444,每个像素2个字节,适用于有alpha通道但不需要很高清的纹理。
PVRTC4,每个像素0.5个字节,pvr格式是ios硬件PowerVR图形芯片支持的压缩方式。在图片中有渐变的地方会出现分布不均匀的色条,可以用于一些序列帧特效。
ETC1,每个像素0.5个字节,大部分android支持的压缩方式,OpenGL ES 2.0标准也支持。没有alpha,需要专门生成alpha通道的图,加上alpha图的大小比pvrtc大一倍。ETC2支持alpha通道,但需要OpenGL ES 3.0标准支持。目前可以采用ETC1或者PNG/JPEG格式。

JPG + PNG8 通道分离技术,刀塔传奇采用的方式。flash很早就采用这个方式来压缩图了。原理就是把RGB色彩通道和alpha通道分离出来,分成一张24位的jpg图(JPG不含alpha通道),以及一张8位的png灰度图(灰度值代表alpha值)。只对JPG图像压缩,在程序中使用时再合并为一张图。

对于一张1024*1024的图片,RGBA8888大小为4Mb,RGBA565和RGBA4444大小为2Mb,PVRTC4和etc是0.5Mb。

无论哪种png的格式,为了在程序读取时区分4444,565,5551和8888,最后需要用texturepacker输出为pvr.ccz或者pvr.gz格式,png本身不带像素格式的信息,如果输出成png,最后到内存中又全都展开成8888了……cocos2dx里的实现是这样的。

总结:android用etc压缩格式,ios用pvr压缩格式,(ui资源用png+plist)。

相关工具:pngquant ,texturepacker。

注:本文总结自我大知乎手游的游戏资源是如何压缩的?以及手机游戏开发如何选择和优化图像素材?,感谢相关作者的无私奉献。仅为本人记录与学习所用。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值