在FBO中切换当前GL_COLOR_ATTACMENT

时间:2012-10-08 06:26:28

标签: opengl-es opengl-es-2.0

然后我们创建缓冲区对象,我们可以指定从0到N的许多颜色附件

glBindFramebuffer(GL_FRAMEBUFFER, some_buffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,some_texture_0, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D,some_texture_1, 0);   

但是我们绘制缓冲区,如何控制我们在FBO中使用哪种颜色附件?(默认为0),或者多种颜色附件的工作方式不同?

glBindFramebuffer(GL_FRAMEBUFFER, some_buffer);
//draw something
//switch to colour_attachment1
//draw something
//switch back to colour_attacment0

1 个答案:

答案 0 :(得分:2)

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D,some_texture_1, 0);

OpenGL ES 2.0中不允许使用此行。至少,不是without extensions。 OpenGL ES根本不支持具有多个颜色缓冲区。只有GL_COLOR_ATTACHMENT0;仅此而已。

因此,如果你想绘制一个缓冲区而不是另一个缓冲区,你需要绑定一个新的FBO才能这样做。