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

Get maximum number of framebuffer color attachments?

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

查询即可获取

int maxColorAttachments;
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);

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

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

    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 规范。