pvrtc 和 etc是硬件支持的格式,因此,不会进行内存和显存解码,将会省许多
同时,由于不会解码,那CPU到GPU的传输量就会变少,在手机平台这种总线带宽小的设备上,可以得到一定量的性能提升。
但pvrtc只适合IOS,etc适合android, 需要做两个平台的分别优化,并且etc1(刚刚有修改,先前是说的etc,随着OPENGL ES 3.0的发布,etc2也出了,支持ALPHA通道,但就目前的市场,可以不用考虑)不支持ALPHA通道,所以需要解决一些问题。
png24/32是无压缩格式的RGBA通道,质量是最好的
JPG是有损压缩的格式,不支持ALPHA通道,但是是安装包最小的。
但JPG会进行内存解压,也就是说,一个JPG读入到内存后,与png24/32读入内存是一样的。
综上可知各种格式的优缺点
prvtc,etc不仅可以减少安装包大小,也能减少内存显存开销,并能提升一定的性能
png24/32可以保证原始质量,但内存和安装包大小 会很大
jpg不能省内存显存,但jpg可以使安装包较小,且它不支持ALPHA通道。
而对于pvrtc,etc打出来的文件大小,比jpg要大得多。
在此,我们还可能会用到一种叫 grunt - png8的压缩格式,这种格式可以将png24/32压缩到1/4的大小,且几乎可以维持图像质量需求,这个比JPG大,但支持ALPHA通道。
那选择策略就需要针对不同的资源进行优化了
1、如果游戏是那种大量关卡资源,但同关卡中出现的资源和元素较少,这种一般不会有内存和性能瓶颈,那可以选择JPG+grunt-PNG8,这样一来,可以将安装包大小减少到1/4左右
2、如果游戏是那种同屏复杂度较大的,那就需要对游戏中的元素分类处理了, 一般对于UI,直接使用png8即可, 对于单张场景,我们使用JPG,对于里面的小元素,比如特效,人物精灵动画等,则建议使用pvrtc或者etc格式。
纹理格式的选择不是死的,只要你明白了不同格式的优缺点,那就可以很容易地做出判断。。