15

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

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

每个绑定到 FBO 的纹理都将被清除(对吗?)。有没有办法在特定的绘制缓冲区/纹理上做到这一点?

4

2 回答 2

20

调用GL_COLOR_BUFFER_BIT中的将清除通过指定的所有glClear活动绘制颜色缓冲区glDrawBuffers。因此,您可以在执行清除之前更改绘制缓冲区。

但这是不必要的状态变化。您可以简单地调用glClearBuffer,这将清除特定的缓冲区

于 2013-08-03T05:09:24.333 回答
1

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

于 2013-08-03T05:01:48.710 回答