3

我尝试在 OpenGL 中使用 FBO 的模板缓冲区,但我无法让它工作。我为深度和模板目标绑定了一个 depth24_stencil8 纹理到 FBO。作为一个简单的测试,我尝试了:

/* Enable FBO */

glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_NEVER, 1, 0xff);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);

glBegin(GL_TRIANGLE);
/* Draw some triangles */
glEnd();

glDisable(GL_STENCIL_TEST);

/* Disable FBO and render it on screen as a texture. */

当我使用 GL_NEVER 时,根本不应该渲染任何东西,但我可以看到三角形。这就像根本没有模板,但我不明白为什么。在没有 FBO 的情况下尝试此代码有效,因此我认为我正确使用了模板功能。我不知道如何解决这个问题。是否有人已经在 FBO 中使用了模板?

4

1 回答 1

0

我的错,我没有正确地将模板缓冲区连接到我的 FBO。奇怪的是,我的 fbo 状态并没有表明任何错误或错误的附件,所以我被说服它没问题......这个问题让我发疯了,但现在它似乎工作了。

于 2011-12-05T22:03:31.863 回答