获取最大数量的帧缓冲颜色附件?

时间:2015-04-17 19:35:32

标签: opengl framebuffer

我正在开发OpenGL应用程序,我需要找到支持多少帧缓冲颜色附件。有没有办法向OpenGL查询该值?

2 个答案:

答案 0 :(得分:14)

有两个值可能会限制您可以使用的附件数量:

  • GL_MAX_COLOR_ATTACHMENTS指定FBO具有的颜色附着点数。换句话说,它对应于使用n指定附加点时可以使用的最大值GL_COLOR_ATTACHMENTn。这将限制可以同时将多少颜色纹理/渲染缓冲区附加到FBO。您可以通过以下方式获得此限制:

    GLint maxAttach = 0;
    glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxAttach);
    
  • GL_MAX_DRAW_BUFFERS指定您可以同时绘制多少缓冲区。它是您允许传递给glDrawBuffers()的最大缓冲区数,以及片段着色器中允许的最大输出数。您可以通过以下方式获得此限制:

    GLint maxDrawBuf = 0;
    glGetIntegerv(GL_MAX_DRAW_BUFFERS, &maxDrawBuf);
    

这两个值不必相同。因此,您可以拥有一定数量的附件,但不能同时为所有附件绘制。

这两个限制的最小值在OpenGL 3.x及更高版本中为8,包括当前4.5规格。

答案 1 :(得分:4)

您可以通过查询来获取

int maxColorAttachments;
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);