Android apk 和 iOS .ipa 大小与运行速度

在手机游戏中多媒体文件往往是考虑包大小和内存优化的重点。我这里只说下cocos2d-x 2.4的图片处理。


包的大小控制:

第一种: 可以用TexturePacker 打成RGBA4444 +防抖Dithering(AtkinsonAlpha) +.pvr.ccz

               1.RGBA4444 为4x4 = 16bit图,1像素占2字节,而RGBA8888,则会占4字节。看起来小一半,但是加上防抖以后,其实不到一半,但是会小。

               2.两个防抖算法:AtkinsonAlpha 和FloydsteidbergAlpha ,我用前者更小,而且效果差不过。

               3.pvr.ccz 只是图压缩,不影响cocosbuilder的使用,cocostudio没试过。因为plist里面存储的还是png相关的xml文件。

              *4.因为cocos2dx会以2的幂次方读入图,所以如果在有限的1024中放入更多的图,可以精细优化下。

               5.这种打图方式,注意下9Sprite的效果,我这里只有用9Sprite的效果稍微差点。
               *6.iOS Retina 觉得效果不好可以用RGBA 8888

第二种:用TexturePacker打成RGBA8888 + png+pngquant
             1. 这种方式比第一种要更小,减少接近50%。

             2. 特效图png不建议用pngquant压缩

             3. 背景用jpg即可。


运行速度:

            cocos2d-x 解析图片的时候统一按照RGBA8888去处理的,所以无论选择第一种还是第二种方式,占内存都是一样的。所谓的运行速度提升,实际上是从加载速度和解析图片期间的内存膨胀大小来说的。pvr图片加载速度要比png和jpg快3-5倍左右(同样1024*1024 argb8888)。

            内存膨胀:
           png和 jpg图片加载过程内存消耗(1024*1024 RGBA8888 500k的jpg): 读取图片文件(消耗图片大小内存,500k) ->解析jpg数据(cgimage, 4mb)->释放500k的图片内存 ->opengl纹理数据(4mb) ->释放cgimage的4mb内存。 释放cgimage内存的实际是有系统决定的,会很快,但不一定是立即执行。 所以内存会瞬间飙升8.4mb左右,然后减少4.4mb,稳定到4mb左右
  

           pvr.ccz

          同为1024    RGBA8888格式,图片到内存消耗4mb(pvr.ccz为1mb左右解压后为4mb) ,苹果手机和部分安卓手机用的是powerVR显卡,所以可以直接将pvr图片交给显卡消耗4mb,然后释放4mb.

          所以,追求速度优先就用第一种方式,且膨胀相对小些。可能适合RPG以及追求极致效果的。

                    追求最小包试试第二种方式,适合棋牌等不需要太多极致效果的。

                   也可以将第一种和第二种融合下,精确处理纹理。

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值