查看文档,我应该能够使用BGRA作为纹理的内部格式。我用BGRA数据提供纹理(对于glRenderbufferStorage使用GL_RGBA8_OES,因为它似乎不允许使用BGRA)。但是,以下不工作:iPhone上的BGRA glTexImage2D和glReadPixels
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的相机。
谢谢。这就是我一直在做的事情。问题在于,在屏幕上进行传输时,它被倒置了。我只是在最后的着色器中进行了渲染,并且工作正常。我只是想避免任何额外的通行证,因为我的帧速率已经在痛苦中:) – akaru 2011-02-25 23:49:38