有人成功地做到了这一点吗?无论我在模板渲染缓冲区中使用什么索引格式,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_STENCIL_INDEX8
和GL_STENCIL_INDEX8_OES
,它们似乎根本不起作用(始终会得到GL_FRAMEBUFFER_UNSUPPORTED
)。看来你必须使用深度+模板格式的GL_DEPTH24_STENCIL8_OES
才能让模板缓冲区正常工作。 - bobobobo