我需要将某些内容渲染到屏幕外缓冲区,并通过调用将像素读回“CPU 内存” glReadPixels
。我的代码在 Windows 下编译为普通 OpenGL 时效果很好,但是为了让它在 iOS 中的 OpenGL ES 2.0 下运行,我不得不用一个替换GL_ALPHA
(或GL_LUMINANCE
)纹理GL_RGBA
,这意味着
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
代替
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_UNSIGNED_BYTE, NULL);
我无法使用 8 位纹理运行代码。
但是由于我不需要此渲染的全色,因此每个像素额外的 3 个字节都被浪费了。在我再次尝试之前,这里是我的问题:
有没有人成功地在屏幕外渲染到 8 位纹理并将字节读回 CPU 内存?有可能吗?