IOS和Android所支持的压缩格式不同,不同压缩格式的质量和压缩率差异较大,项目特殊的显示需求对贴图的尺寸也会有特殊的需求。因此,在对贴图的压缩格式上要进行分类处理才能达到比较满意的压缩效果和压缩率。
在安卓环境下,大部分贴图只需要选择默认的压缩格式即可。但是也有几点比较特殊的需求。对于lightmap,选择使用安卓的默认压缩格式时,部分情况下产生了大块的色带,需要选择其他压缩格式(选择了减半尺寸,效果影响不大,应该本来美术选的尺寸就太高了)。安卓下不支持DXT的压缩格式,如果选用DXT的压缩格式,在安卓手机上运行时产生一个报警提示,这个要经常资源进行检查。
在IOS环境下,只有一种压缩格式PVRTC,这种压缩格式压缩质量比较低,当然压缩率是很高的。另外两种可以用的压缩方式是16bit和尺寸减半,16bit压缩对于色阶过渡比较连续的图会出现色带问题,尺寸减半压缩会导致图变糊。在游戏中,我们按照压缩格式对图集进行了划分:
- UI16Bit 存放大部分icon,这些icon图对色阶过渡要求不高
- UICompress 背景图类为主,还有部分对精度要求不高的大图
- UIHalfCompress 细节纹路比较少的图
- UIUnCompress 对色阶和精度要求都很高的图(之所以还放在图集里,是因为:1.dc合并 2.安卓可以压缩)
以上是图集的压缩分类,图集主要还是给UI各类控件使用的。我们另外两种主要的贴图还有:1. 图标类(卡牌图标)贴图 2.模型贴图。图标类贴图在原来使用标准尺寸图标的时候,是选用的PVRTC压缩,效果不是很差可以接受。在我们的美术需要非标准尺寸图标的时候,我们利用Advanced模式将贴图转化为标准尺寸,然后再进行压缩。值得说明的是,我们在转化为标准尺寸的时候使用的是ToLarger模式,也就是转化为较大的标准尺寸再压缩,这样压缩效果比较能够接受。图标类各种压缩方式的大小比较值得注意:
- 128x128图标: 原图64KB PVRTC 8KB
- 162x200图标: 原图126KB 256x256PVRTC 32KB
模型贴图可以直接使用PVRTC,效果可以接受。
对于文字相关的图,按照语言分为多个文件夹,单个图存放方便语言切换。由于是单个图存放,不是标准尺寸,所以只能对部分图使用减尺寸、16bit、24bit等方式压缩。
后面希望能采用更多灵活的图集管理方式,比如图都是分开存放,通过设置tag,自动打包合并图集。有很多项目采用以panel为单位存放图集,这样有利于提高drawcall的合并率,和我们当前采用的方案结合之后可能会得到更好的方案,这个有待研究。