2014-04-29 43 views
1

我可以理解RGBA4与UNSIGNED_SHORT_4_4_4_4,其中每个颜色分量将是4位。 但是,如果我们对具有类型无符号字节的纹理使用RGBA4内部格式,那么解释如何?RGBA4格式,类型GL_UNSIGNED_BYTE

我可以理解的是,在这里每个组件都是8位,但是那么'4'将表示RGBA4? 它会考虑每个8位/组件的前4位而忽略其他位?

+0

'UNSIGNED_BYTE'仅在传输像素时使用。这是为了解释你的'data'指针指向的图像数据。在GL将这些数据复制成自己的内部格式之后,该类型不再具有任何意义。如果需要,您可以将浮点图像数据复制到“GL_RGBA4”中,但GL不关心,它只是要转换像素数据。请注意,由于您标记了此ES,因此讨论会有所不同 - ES不支持不匹配的内部/像素传输类型(无转换)。如果你想要一个单一的答案,我建议你坚持使用单一的API来解决你的问题。 –

+0

Andon M. Coleman @我想问这个查询专门为opengl es 3.0和与glTexImage *调用有关。这些规范显示这个内部格式为RGBA4的GL_UNSIGNED_BYTE是有效的。但是当我用RGBA8渲染GL_UNSIGNED_BYTE的图像和RGBA4时,GL_UNSIGNED_BYTE看起来不同。因此想知道如何将这个图像数据应用于RGBA4内部格式。 – user1896853

回答

1

internalFormatglTexImage2D的参数是纹理格式。

如果您的意思是询问formattype参数,那不是纹理的格式,而是输入数据的格式。 GL将通过遵循GL规范(8.4.4传输GL 4.3 core规范中的像素矩形)中描述的特定规则来解释传入数据类型。

特别地,在8.4.4.1启封,下“特殊解释”,则询问被覆盖的情况下:

如果发生不匹配时

通过任何命令处理像素的矩形产生一个错误INVALID_OPERATION