【问题标题】:OpenGL, stencil buffer of FBO not working?OpenGL,FBO的模板缓冲区不起作用?
【发布时间】:2012-01-13 11:17:59
【问题描述】:

我尝试在 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 中使用过模板吗?

【问题讨论】:

  • 也许你应该展示你如何创建你的 FBO 的代码?
  • 感谢您查看我的帖子,问题现已解决。
  • 我能问一下您的模板缓冲区使用什么格式,因为我无法在帧缓冲区中正常工作。

标签: opengl fbo stencil-buffer


【解决方案1】:

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

【讨论】:

  • FBO 状态可能正常(完成),因为您不需要模板缓冲区(也不需要深度缓冲区)来完成 FBO。在这种情况下,它不会执行任何模板(深度)测试。
  • 您可以将自己的解决方案/问题标记为已解决,因此当有人搜索类似问题时,她可以看到该问题也可能包含解决方案。
  • 我要等两天,暂时不能点击。我会尽快将其标记为已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 2011-03-09
相关资源
最近更新 更多