python - PyOpenGL深度测试没有做任何事情

标签 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 True [0. 1.]

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

These squares should not show up.

编辑:我只是在 Windows 机器上运行它(这是在 Ubuntu 上完成的),一切都运行良好。

最佳答案

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

glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE)

关于python - PyOpenGL深度测试没有做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59510466/

相关文章:

algorithm - 任何人都知道我是否可以找到一个算法或有一个他们可以共享的算法来将球体(网格)分成随机部分?

macos - Mac OS X Lion 上的 FreeGLUT

c++ - GLUT - 什么是 imageloader.h,我怎样才能得到正确的?

c++ - 非方形屏幕上的 OpenGL 绘图线

c++ - 如何在 C++/OpenGL 中获取当前鼠标位置?

python - 带有测试套件和测试用例的 TestSuite

python - 如何使用 Selenium-Python 从多选列表中选择多个选项?

Python:从终端运行此代码

python - 如何从左侧实现对象与 Numpy 数组的乘法?

c++ - 在 OpenGL 中创建不可变缓冲区