获取最大数量的帧缓冲区颜色附件?
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 工作