3

我在使用模板缓冲区时遇到了问题,它似乎归结为根本不起作用。给定以下代码:

  glEnable(GL_STENCIL_TEST);
  glClearStencil(0);
  glClear(GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glColor4f(1, 1, 1, 1);
  glStencilFuncSeparate(GL_FRONT_AND_BACK, GL_NEVER, 0, 0);
  glStencilOpSeparate(GL_FRONT_AND_BACK, GL_INCR, GL_INCR, GL_INCR);
  glBegin(GL_TRIANGLES);
  { draw something }
  glEnd();

三角形还在画!?我在这里错过了一些微不足道的事情吗?

注意:我没有渲染到帧缓冲区,我正在使用 glStencil...Separate 只是为了确保它与正面\背面无关,我保留了一些对我来说似乎不相关的代码。

4

1 回答 1

3

您没有模板缓冲区。并按照规范(来自 4.3 核心,对开页 432):

如果没有模板缓冲区,则不会发生模板修改,就好像模板测试总是通过,而不管对 StencilFunc 的任何调用。

于 2012-11-20T18:08:13.033 回答