查看文档,我应该能够将 BGRA 用于纹理的内部格式。我正在为纹理提供 BGRA 数据(将 GL_RGBA8_OES 用于 glRenderbufferStorage,因为似乎不允许使用 BGRA)。但是,以下方法不起作用:
glTexImage2D(GL_TEXTURE_2D, 0, **GL_BGRA**, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, GL_BGRA, GL_UNSIGNED_BYTE,buffer, 0);
虽然这给了我一个黑框:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, **GL_BGRA**, GL_UNSIGNED_BYTE,buffer, 0);
这确实有效,但是蓝色/红色是反转的(我将 BGRA 数据提供给纹理):
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, **GL_RGBA**, GL_UNSIGNED_BYTE,buffer, 0);
...为什么我不能始终使用 BGRA?我确实注意到 glRenderbufferStorage 似乎不接受任何 BGRA 格式......我真的很困惑。BGRA 是我的数据唯一合适的格式,因为它来自 iphone 的相机。