1、DXT 压缩格式:(only texture with width/heightbeing multiple of 4 can be compressed)
DXT1压缩格式可以提供高达8:1的压缩比例,分辨率的宽高为4的倍数
DXT5压缩格式可以提供4:1的压缩比例
S3TC(DXTn/DXTC) - S3纹理压缩(S3TC)有很多变种格式(DXT1到DXT5),而且被支持的不够广泛.它支持4-bit或8-bit带alpha通道的RGB纹理.此格式可能被下列扩展名字所表示:
2、ETC压缩格式。(onlytexture with width/height being multiple of 4 can be compressed)
Ericsson 纹理压缩或 ETC 是由 Khronos 支持的开放标准,在移动平台中广泛采用。 它是一种为感知质量设计的有损算法,其依据是人眼对亮度改变的反应要高于色度改变。
ETC1格式是OpenGL ES图形标准的一部分,并且被所有的Android设备所支持。扩展名为:GL_OES_compressed_ETC1_RGB8_texture,不自持透明通道,所以仅能用于不透明纹理。
3、ATITC(ATC) - ATI 纹理压缩(onlytexture with width/height being multiple of 4 can be compressed)
(ATITCor ATC)被设备广泛支持,它支持固定帧率的RGB纹理压缩,RGB纹理有无alpha通道都可以.本格式可能被多种OpenGL扩展名字所表示,比如:
GL_AMD_compressed_ATC_texture
GL_ATI_texture_compression_atitc
4、PVRTC- PowerVR 纹理压缩(Only POT texture canbe compressed to PVRTC format)2的幂次方图片
texturecompression (PVRTC) 也是被设备广泛支持,它支持2-bit和4-bit带或不带alpha通道的像素纹理.这种格式被下面的OpenGL扩展名字所表示:
GL_IMG_texture_compression_pvrtc
5、ASTC压缩格式(destWidth %4 == 0 && destHeight % 4 == 0)
自适应可伸缩纹理压缩(ASTC)是一种基于像素块的有损纹理压缩算法,最先进的纹理压缩之一
常见的压缩纹理格式
基于OpenGL ES的压缩纹理有常见的如下几种实现:
1)ETC1(Ericsson texture compression)
2)PVRTC (PowerVR texturecompression)
3)ATITC (ATI texturecompression)
4)S3TC (S3 texturecompression)
ETC1:
ETC1格式是OpenGL ES图形标准的一部分,并且被所有的Android设备所支持。
扩展名为: GL_OES_compressed_ETC1_RGB8_texture,不支持透明通道,所以仅能用于不透明纹理。
当加载压缩纹理时,<internal format>参数支持如下格式:
GL_ETC1_RGB8_OES(RGB,每个像素0.5个字节)
PVRTC:
支持的GPU为ImaginationTechnologies的PowerVR SGX系列。
OpenGL ES的扩展名为:GL_IMG_texture_compression_pvrtc。
当加载压缩纹理时,<internal format>参数支持如下几种格式:
GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG (RGB,每个像素0.5个字节)
GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG (RGB,每个像素0.25个字节)
GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG (RGBA,每个像素0.5个字节)
GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG (RGBA,每个像素0.25个字节)
ATITC:(ATC)
支持的GPU为Qualcomm的Adreno系列。
支持的OpenGL ES扩展名为:GL_ATI_texture_compression_atitc。
当加载压缩纹理时,<internal format>参数支持如下类型的纹理:
GL_ATC_RGB_AMD (RGB,每个像素0.5个字节)
GL_ATC_RGBA_EXPLICIT_ALPHA_AMD (RGBA,每个像素1个字节)
GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD (RGBA,每个像素1个字节)
S3TC
也被称为DXTC,在PC上广泛被使用,但是在移动设备上还是属于新鲜事物。支持的GPU为NVIDIA Tegra系列。
OpenGL ES扩展名为:
GL_EXT_texture_compression_dxt1和GL_EXT_texture_compression_s3tc。
当加载压缩纹理时,<internal format>的参数有如下几种格式:
GL_COMPRESSED_RGB_S3TC_DXT1 (RGB,每个像素0.5个字节)
GL_COMPRESSED_RGBA_S3TC_DXT1 (RGBA,每个像素0.5个字节)
GL_COMPRESSED_RGBA_S3TC_DXT3 (RGBA,每个像素1个字节)
GL_COMPRESSED_RGBA_S3TC_DXT5 (RGBA,每个像素1个字节)
由此可见,Mali系列GPU只支持ETC1格式的压缩纹理,而且该纹理不支持透明通道,有一定局限性。
以上压缩纹理格式每个像素大小相对A8R8G8B8格式的比例,最高压缩比是16:1,最低压缩比是4:1,对于减小纹理的数据容量有明显作用,相应在显存带宽上也有明显优势,从而提高游戏的运行效率(此特性没有绝对数值,根据每个游戏的用法和瓶颈点不同而有差别)。