获取最大数量的帧缓冲区颜色附件?
Get maximum number of framebuffer color attachments?
我正在开发 OpenGL 应用程序,我需要了解支持多少帧缓冲区颜色附件。有没有办法查询 OpenGL 的值?
查询即可获取
int maxColorAttachments;
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);
有两个值可能会限制您可以使用的附件数量:
GL_MAX_COLOR_ATTACHMENTS
指定 FBO 有多少个颜色附着点。换句话说,它对应于用 GL_COLOR_ATTACHMENTn
指定附着点时可以使用的最大值 n
。这将限制可以同时附加到 FBO 的颜色 textures/renderbuffers 的数量。您可以通过以下方式获得此限制:
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 应用程序,我需要了解支持多少帧缓冲区颜色附件。有没有办法查询 OpenGL 的值?
查询即可获取
int maxColorAttachments;
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments);
有两个值可能会限制您可以使用的附件数量:
GL_MAX_COLOR_ATTACHMENTS
指定 FBO 有多少个颜色附着点。换句话说,它对应于用GL_COLOR_ATTACHMENTn
指定附着点时可以使用的最大值n
。这将限制可以同时附加到 FBO 的颜色 textures/renderbuffers 的数量。您可以通过以下方式获得此限制: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 规范。