如何将纹理附加到帧缓冲区?

时间:2013-02-26 12:56:26

标签: opengl framebuffer

目前我存储了帧缓冲区的id和渲染目标的数量。但要绘制到帧缓冲区,我需要使用glDrawBuffers设置正确的绘制缓冲区。现在我这样做。

vector<GLenum> buffers;
for(int i = 0; i < targets; ++i)
{
    buffers.push_back(GL_COLOR_ATTACHMENT0 + i);
}
glDrawBuffers(targets, &buffers[0]);

为简单起见,我不想再自己存储渲染目标的数量了。无论如何,我想OpenGL会这样做。有没有办法获取绑定到帧缓冲区的颜色附件,例如使用glFramebufferTexture2D电话?

1 个答案:

答案 0 :(得分:4)

绘制缓冲区位置是FBO的状态的一部分。如果你没有更改它们,你只需要在初始化时将它们设置为一次,其中目标的数量应该是众所周知的。

但是,如果您坚持查询附件,则use glGetFramebufferAttachmentParameter可以GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​。如果您获得的值为GL_NONE,则该绑定点没有附件。