是否可以使用多目标渲染清除帧缓冲区中的某些纹理?

时间:2013-08-03 04:30:12

标签: opengl fbo

我有一个帧缓冲对象,我在其中使用N个纹理上的多目标渲染。在某个时候,我想清除其中一些纹理的内容,但不是全部。 如果我打电话

glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

绑定到FBO的每个纹理都将被清除(我是对的吗?)。 有没有办法在特定的绘制缓冲区/纹理上执行此操作?

2 个答案:

答案 0 :(得分:19)

the glClear call中的GL_COLOR_BUFFER_BIT将清除glDrawBuffers所指定的所有active draw color buffers。因此,您可以在执行清除之前更改绘制缓冲区。

但这是不必要的状态变化。您可以simply call glClearBufferclear a particular buffer

答案 1 :(得分:1)

这将是所有缓冲区。 您可以使用glColorMask屏蔽缓冲区以进行清除。 http://www.opengl.org/sdk/docs/man/xhtml/glColorMask.xml