PyOpenGL深度测试什么也没做

时间:2019-12-28 11:30:45

标签: python opengl glut pyopengl

我在这里初始化深度测试:

def _initGL(self):
    glEnable(GL_DEPTH_TEST)
    glDepthMask(GL_TRUE)
    glDepthFunc(GL_NEVER)

    glDepthRange(0.0, 1.0)
    glClearDepth(1.0)

然后,稍后我显示一些几何图形

def _display(self):
    print(glGetBooleanv(GL_DEPTH_TEST))
    print(glGetIntegerv(GL_DEPTH_FUNC)==GL_NEVER)
    print(glGetFloatv(GL_DEPTH_RANGE))
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glUseProgram(self._program)
    #This is a wrapped VBO doing the drawing. That actually works.
    self._buffer.draw()
    glutSwapBuffers()

印刷品的输出是

  

1   真正   [0。 1。]

因此,毫无疑问,深度测试已经开始并且设置为永不让任何片段通过,但是:

These squares should not show up.

编辑:我只是在Windows机器上运行了它(这是在Ubuntu上完成的),并且一切正常。只是他妈的杀了我。

1 个答案:

答案 0 :(得分:2)

可能默认的帧缓冲区(Ubuntu)没有深度缓冲区。您必须先用glutInitDisplayMode指定显示模式,然后再用glutCreateWindow创建OpenGL窗口。
GLUT_DEPTH选择带有深度缓冲区的窗口。例如:

glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE)