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

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于获取最大数量的帧缓冲区颜色附件?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用带有立方体贴图颜色附件的深度渲染缓冲区?

iOS OpenGL ES Analyzer 列出“不存在的帧缓冲区附件”和“缺少帧缓冲区附件”,但 FBO 工作

在 OpenGL ES 中为帧缓冲区使用深度和模板渲染缓冲区附件

OpenGL 帧缓冲区颜色附件到计算着色器

如何从 OpenGL 中的帧缓冲区纹理中采样像素?

COLOR_ATTACHMENT's - 如何将多个纹理渲染为帧缓冲区对象内的颜色附件?