我正在调用 glTexSubImage2D。如果我的像素格式是GL_RGBA
,然后是像素类型GL_UNSIGNED_BYTE
and GL_UNSIGNED_INT_8_8_8_8
完全等价?
另外,这两对等价吗?
Format = GL_RGBA, Type = GL_UNSIGNED_INT_8_8_8_8
Format = GL_BGRA, Type = GL_UNSIGNED_INT_8_8_8_8_REV
我尝试阅读 OpenGL 规范和 GL_EXT_packed_pixels 规范,但老实说我无法理解它们。
答案是否定的。您必须考虑计算机中的字节顺序。如果你有GL_RGBA
and GL_UNSIGNED_INT_8_8_8_8
,这意味着像素存储在 32 位整数中,并且颜色按照该整数中的逻辑顺序 RGBA,例如红色位于高位字节,阿尔法位于低位字节。但如果机器是小尾数法(如 Intel CPU),则内存中的实际顺序是 ABGR。然而,GL_RGBA
with GL_UNSIGNED_BYTE
无论计算机是小端还是大端,都会以 RGBA 顺序存储字节。
GL_BGRA
with GL_UNSIGNED_INT_8_8_8_8_REV
将以逻辑顺序 ARGB 将颜色存储在整数中,但在小端机器上,您会在内存中获得 BGRA 顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)