【问题标题】:Get maximum number of framebuffer color attachments?获取最大数量的帧缓冲区颜色附件?
【发布时间】:2015-04-17 19:35:32
【问题描述】:

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

【问题讨论】:

    标签: opengl framebuffer


    【解决方案1】:

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

    • GL_MAX_COLOR_ATTACHMENTS 指定 FBO 有多少颜色附着点。换句话说,它对应于在使用GL_COLOR_ATTACHMENTn 指定连接点时可以使用的最大值n。这将限制可以同时附加到 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 规范。

    【讨论】:

      【解决方案2】:

      可以通过查询得到

      int maxColorAttachments;
      glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-09
        • 1970-01-01
        • 2013-06-19
        • 1970-01-01
        • 1970-01-01
        • 2017-05-12
        相关资源
        最近更新 更多