【问题标题】:PyOpenGL depth test doesn't do anythingPyOpenGL 深度测试不做任何事情
【发布时间】:2020-04-17 23:56:24
【问题描述】:

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

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.]

所以毫无疑问,深度测试已经开启,并且设置为永远不会让任何片段通过,但是:

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

【问题讨论】:

    标签: python opengl glut pyopengl


    【解决方案1】:

    可能默认的帧缓冲区(Ubuntu)没有深度缓冲区。在glutCreateWindow 创建OpenGL 窗口之前,您必须通过glutInitDisplayMode 指定显示模式。
    GLUT_DEPTH 选择具有深度缓冲区的窗口。例如:

    glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE)
    

    【讨论】:

      猜你喜欢
      • 2020-12-21
      • 2022-01-13
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多