(py)OpenGL:模板缓冲区不工作

(py)OpenGL: stencil buffer not working

模板缓冲区根本不工作。就好像没有打开一样。使用下面的代码,我希望在屏幕上看不到任何内容,因为我的测试是 GL_NEVER,它总是会失败。但是矩形可靠地显示在屏幕上。

glEnable(GL_STENCIL_TEST);
glStencilMask(0xff)
glClear(GL_STENCIL_BUFFER_BIT)

glStencilFunc(GL_NEVER, 1, 0xFF);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);

glBegin(GL_QUADS)
glVertex3fv(...); glVertex3fv(...)
glVertex3fv(...); glVertex3fv(...)
glEnd()    

另一件值得注意的事情是我使用的是pygame+ pyOpenGL。 pygame.display.set_mode(显示, DOUBLEBUF|OPENGL)

我看到关于 GLUT 的引用说初始化时需要分配模板缓冲区,但我不确定如何使用 pygame。

这花了我一些时间才弄清楚。所以我要把它放在这里以防其他人也遇到这个问题。

pygame.display.gl_set_attribute(GL_STENCIL_SIZE, 8)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)