CocosCreator压缩纹理使用总结

如前文所说,和原始的PNG图片相比,压缩纹理在内存和包体上都有巨大的优势,但由于移动设备的硬件和OpenGL ES支持不同,目前还没有一种压缩纹理格式既能发挥优势,又能兼容所有设备,所以需要针对不同平台做定制。

1 不同纹理的特点

1.1 ETC1

ETC1内存占用是PNG的1/4,文件大小是PNG的1-3倍(经过zip或打成apk后是PNG的1/2~1/3)。但是ETC1只能存储RGB信息,不适用带透明度的图片,为解决这个问题,Creator在ETC1文件中额外写入了透明度信息,即ETC1+A格式,所以占用内存也比原始ETC1多一倍,即相当于PNG的1/2。ETC1/ETC1+A需要OpenGL ES 2.0(对应WebGL 1.0)环境,目前几乎所有Android手机都支持ETC1,但是iOS不支持

1.2 ETC2

ETC2在内存和文件大小方面和ETC1一样,即内存占用是PNG的1/4,文件大小是PNG的1-3倍(经过zip或打成apk后是PNG的1/2~1/3)。和ETC1不同的是,ETC2能完整存储RGBA信息,适用于任何图片,且Android和iOS系统都支持。但是ETC2需要OpenGL ES 3.0(对应WebGL 2.0)环境,目前还有不少低端Android手机不兼容,iOS方面从iPhone5S开始都支持OpenGL ES 2.0。

1.3 PVR

PVR常用的是PVRTC4+A,在内存和文件大小方面和ETC一样,适用于所有iOS设备,但是Android不支持。另外PVR要求纹理长宽相等(正方形)且是2的幂次方,例如1280720的PNG图片,转换为PVR后变成20482048,这一点会大大增加内存消耗。在实测中还发现转换后的图片质量不如ETC,存在模糊毛边现象,对画面要求高的游戏不适合。如果要用PVR格式,则图片大小应该依次限制在256、512、1024、2048内,宁愿用3张1024也比用一张2048好。

2 Creator使用总结

  • Creator转换压缩纹理的选项,根据转换速度分为FastSlow等好几档,速度越慢则画面质量越好。不管选哪个,只影响显示效果和转换时长,显存占用都是一样的
  • 计算压缩纹理的显存占用,有个简单的统计方案,即纹理文件大小就是显存占用,例如文件大小是1.5M,则它占用的显存也是1.5M。
  • 从OpenGL ES 2.0开始,GPU纹理支持非2幂次方,也就是说,小于2048的图片比2048图片更节省内存。目前所有手机都已经是OpenGL ES 2.0及以上了。
  • 对于Android原生平台,要想尽量兼容大多数设备,又想发挥内存和包体优势,目前最佳的是ETC1
  • 对于iOS原生平台PVR画面质量不佳,如果只考虑iPhone5S及之后的设备,则使用ETC2比PVR好
  • 从OpenGL ES 3.0开始,ARM新推出一种ASTC格式,Android和iOS都支持画面质量比PVR好,且不要求纹理长宽相等和2的幂次方ASTC可能会是未来的统一格式,但目前很多Android低端设备还不支持

你可能感兴趣的:(CocosCreator压缩纹理使用总结)