模板缓冲区根本不起作用。就好像它没有开启一样。使用下面的代码,我希望屏幕上看不到任何内容,因为我的测试是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(display,DOUBLEBUF | OPENGL)
我看到GLUT的引用说需要在初始化时分配模板缓冲区,但我不确定如何使用pygame。
答案 0 :(得分:4)
我花了一些时间才弄明白。所以我会把它放在这里以防万一其他人遇到这个。
pygame.display.gl_set_attribute(GL_STENCIL_SIZE, 8)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)