OPENGL ES最多支持32位颜色值。
支持的像素格式有以下几种:
客户端格式 | GL格式 | GL数据类型 | 字节数 |
RGBA8888 | GL_RGBA | GL_UNSIGNED_BYTE | 4 |
RGB888 | GL_RGB | GL_UNSIGNED_BYTE | 3 |
RGB5A1 | GL_RGBA | GL_UNSIGNED_SHORT_5_5_5_1 | 2 |
RGB565 | GL_RGB | GL_UNSIGNED_SHORT_5_6_5 | 2 |
RGBA4444 | GL_RGBA | GL_UNSIGNED_SHORT_4_4_4_4 | 2 |
AI88 | GL_LUMINANCE_ALPHA | GL_UNSIGNED_BYTE | 2 |
I8 | GL_LUMINANCE | GL_UNSIGNED_BYTE | 1 |
A8 | GL_ALPHA | GL_UNSIGNED_BYTE | 1 |
RGB888和RGBA8888相差了ALPHA通道的8位,在大多数情况下,ALPHA通道的值都是1,此时就应该使用RGB888格式来存储,既节约了内存空间,也提高了渲染性能。
同样占2字节的格式中也有区别:
RGB565格式放弃了ALPHA通道,但提高了RGB颜色的精度,(由于人类的视觉对绿色更敏感,所以G通道是6位)。
RGB5A1格式只有1位表示ALPHA值,适用于字体或者蒙版。
RGBA4444格式就是RGBA8888格式的简化版,丢失了一些精度,但可以节省一半的内存。