OpenGL ES中GL_UNSIGNED_SHORT_4_4_4_4和GL_UNSIGNED_SHORT_5_6_5之间的区别

时间:2012-02-22 13:52:34

标签: opengl-es

有人知道OpenGL ES中GL_UNSIGNED_SHORT_4_4_4_4和GL_UNSIGNED_SHORT_5_6_5数据类型之间的区别吗?

3 个答案:

答案 0 :(得分:6)

它们都是16位纹理。

当使用32位纹理时,每个颜色分量有8位加上8位,用于alpha,最高质量和alpha控制,所以8888。

如果您只需要颜色而不是alpha,那么16位总是有折衷,那就使用565.为什么选择565?因为16位不能均匀地划分为3,并且我们的眼睛在绿色光谱中的表现更好,所以通过将剩余的位置为绿色来获得更好的质量。 如果你需要阿尔法,但你的图像不使用alpha使用渐变5551,5每个颜色5位用于alpha。 如果你的图像有一些渐变alpha,那么你可以使用4444,每种颜色4位,alpha为4位。

4444具有最差的色彩质量,但它保留了一些alpha混合,我使用它作为我的字体纹理,例如,比32位轻,因为字体是单色的,它们很适合4位。

答案 1 :(得分:4)

我不是OpenGL专家,但是:

GL_UNSIGNED_SHORT_4_4_4_4代表GL_UNSIGNED_SHORT_R_G_B_A,其中每个RGBA值的值均为4位(即2 ^ 4)

GL_UNSIGNED_SHORT_5_6_5代表GL_UNSIGNED_SHORT_R_G_B。您可以看到它们在这里没有Alpha值,因此这是一个主要区别。 RGB值也可以具有更大的值,因为它们分别是5 6和5位。

答案 2 :(得分:0)

好吧,当在像素规范命令(GL_UNSIGNED_SHORT_4_4_4_4glTexImage2D)中使用glReadPixels作为类型时,假设数据在系统内存中布局为一个16位值像素,每个组件各占4个连续位。它只能以GL_RGBA

的格式使用

GL_UNSIGNED_SHORT_5_6_5也假设单个像素为16位值,但红色和蓝色分量各占5位,绿色分量占6位(没有alpha通道)。它只能以GL_RGB

的格式使用