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
4

1 回答 1

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

此行在 OpenGL ES 2.0 中是不允许的。至少,不是没有 扩展。OpenGL ES 根本不支持拥有多个颜色缓冲区。只有GL_COLOR_ATTACHMENT0; 仅此而已。

因此,如果您想先绘制到一个缓冲区,然后再绘制另一个缓冲区,则需要绑定一个新的 FBO 来执行此操作。

于 2012-10-08T07:03:42.973 回答