OpenGLES 2.0帧缓冲可以同时绑定到纹理和渲染缓冲区吗?

Brad Larson 在这里和这里提供了一些很棒的代码,用于“将场景渲染成纹理支持的帧缓冲区”,但目前尚不清楚这是否与我用于绘图的其余部分的帧缓冲区相同。

如果将渲染缓冲区附加到帧缓冲区,帧缓冲区是否也可以渲染为具有相同调用的纹理?

听起来你可能会对FBO的使用感到困惑。 如果你需要它,这应该让你开始: Apple Developer – 在屏幕外绘图 。 这也有帮助。

Renderbuffer是你可以绑定到FBO(帧缓冲对象)的东西。 如果您不希望立即显示渲染,但想要读取渲染结果或对其执行其他渲染,则会创建FBO。 FBO在OpenGL ES 2.0中的工作方式,您只有一个颜色附加点可用(GL_COLOR_ATTACHMENT0 – 您的片段着色器输出变量gl_FragColor连接到此附着点),并且它只能附加一个纹理或渲染缓冲区。 所以要回答最后一个问题,你不能让FBO同时将颜色写入渲染缓冲区和纹理。

至于问题的第一部分,这取决于您是否已经在使用FBO或默认帧缓冲。 你正在寻找的行为有可能是这样的:

  1. 绑定一个FBO
  2. 渲染到附加到FBO的纹理的东西
  3. 绑定默认的帧缓冲区
  4. 使用步骤2中的纹理来影响第二个renderpass中的渲染。

希望这能回答你的问题。