我正在开发OpenGL应用程序,我需要找到支持多少帧缓冲颜色附件。有没有办法向OpenGL查询该值?
答案 0 :(得分:14)
有两个值可能会限制您可以使用的附件数量:
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规格。
答案 1 :(得分:4)
您可以通过查询来获取
int maxColorAttachments;
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);