目前我存储了帧缓冲区的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
电话?
答案 0 :(得分:4)
绘制缓冲区位置是FBO的状态的一部分。如果你没有更改它们,你只需要在初始化时将它们设置为一次,其中目标的数量应该是众所周知的。
但是,如果您坚持查询附件,则use glGetFramebufferAttachmentParameter
可以GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
。如果您获得的值为GL_NONE
,则该绑定点没有附件。