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

9

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

2个回答

15

有两个值可能会限制您可以使用多少附件:

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


5
您可以通过查询获取它。
int maxColorAttachments;
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接