将模具呈现缓冲区绑定到 opengl 中的帧缓冲区



有人成功地做到了吗?似乎我在模板渲染缓冲区中使用的任何索引格式glCheckFramebufferStatus(...)都会返回GL_FRAMEBUFFER_UNSUPPORTED.我已经成功地绑定了深度\颜色渲染缓冲区,但是每当我尝试对模板缓冲区执行相同的操作时,我都会(如我所说)GL_FRAMEBUFFER_UNSUPPORTED.

这是我的代码片段:

// Create frame buffer
GLuint fb;
glGenFramebuffers(1, &fb);
// Create stencil render buffer (note that I create depth buffer the exact same way, and It works.
GLuint sb;
glGenRenderbuffers(1, &sb);
glBindRenderbuffer(GL_RENDERBUFFER, sb);
glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, w, h);
// Attach color
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, cb, 0);
// Attach stencil buffer
glBindFramebuffer(GL_FRAMEBUFFER, fb);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rb);
// And here I get an GL_FRAMEBUFFER_UNSUPPORTED when doing glCheckFramebufferStatus()

有什么想法吗?

注意:颜色附加是纹理,而不是渲染缓冲区

切勿使用独立的模具缓冲区。如果需要模具,请始终使用深度+模具图像格式。请注意,模具索引格式不是必需的图像格式。

即使您在这里没有使用深度缓冲区,您仍然应该使用 GL_DEPTH24_STENCIL8 ,您应该将其附加到GL_DEPTH_STENCIL_ATTACHMENT​

您可以在最近的 nvidia 硬件/驱动程序上使用仅模板

glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_TEXTURE_2D, fboStencilTexture, 0);

仍然不支持单独的深度和模板

最新更新