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

标签 opengl framebuffer

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

最佳答案

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

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

    关于opengl - 获取最大数量的帧缓冲区颜色附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707968/

    相关文章:

    c++ - 为什么添加颜色附件会导致速度降低 3 倍?

    java - 获取 mediaMetadataRetriever.setDataSource 抛出非法参数异常

    c++ - X11 中是否可以使用全屏 8 位帧缓冲区,如果可以,我做错了什么?

    framebuffer - grub2、grub-mkrescue、BIOS、vbe 帧缓冲区、自定义内核

    C++ glfw3 : one (of the two) windows in fullscreen mode is not really fullscreen (Mac Os)

    c++ - 网格类中损坏的顶点数据

    opengl - GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 试图创建多采样帧缓冲区

    c++ - Windows 7 64 位,Qt 4 : glGetVersion returns "1.1.0", nvogl32v.dll 被卸载

    c - OpenGL 鼠标 "lock"

    opengl - OpenGL 有预着色器吗?