我在代码中成功地将FBOs用作渲染目标。然而,当我这样做时,我无法确定可以期望什么结果:
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, someRgbaTexture, 0);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, *someRgbaBuffer);
在OpenGL ES 2.0中(假设FBO为GL_FRAMEBUFFER_COMPLETE),我的目标是获取由
someRgbaTexture
引用的纹理内容。桌面版OpenGL有glGetTexImage()函数来实现此目的,但ES中不存在。将
someRgbaTexture
设置为读取纹理,然后在另一个FBO目标上进行屏幕填充纹理四边形,然后进行读取会确保达到效果,但我想避免这个额外的过程。因此:在调用
glFramebufferTexture2D()
后,帧缓冲区的内容是否等于纹理的内容,还是该调用只意味着任何未来的渲染操作都将针对指定的纹理?如果是后者:如果我的渲染操作只写入单个像素或根本不写入任何内容,
someRgbaTexture
中的内容保证是什么?
glFramebufferTexture2D()
之后调用glReadPixels()
有点令人惊讶。你绑定缓冲区在哪里?能展示一下完整的渲染序列吗? - Fabien R