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

xor*_*rza 6 opengl framebuffer

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

Ret*_*adi 14

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

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

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

    GLint maxDrawBuf = 0;
    glGetIntegerv(GL_MAX_DRAW_BUFFERS, &maxDrawBuf);
    
    Run Code Online (Sandbox Code Playgroud)

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

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


小智 5

您可以通过查询得到

int maxColorAttachments;
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);
Run Code Online (Sandbox Code Playgroud)