查看文檔,我應該能夠使用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