【问题标题】:glEnable(GL_DEPTH_TEST) not working?glEnable(GL_DEPTH_TEST) 不工作?
【发布时间】:2014-07-30 03:29:49
【问题描述】:

当我在opengl es中启用照明时,我突然发现深度测试无法正常工作。经过一些旋转后,它看起来有些物体是透明的。从这个角度看手柄应该是不可见的。

我在开始时使用 glEnable(GL_DEPTH_TEST)。

我正在使用 OpenGL ES 2.0

有什么不对吗?

当我不使用灯光时,一切看起来都很好。

【问题讨论】:

    标签: opengl-es opengl-es-2.0 opengl-es-1.1


    【解决方案1】:

    您确定在渲染之前清除深度缓冲区吗?

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    

    编辑:

    还要检查您是否真的从窗口 API 激活了深度帧缓冲区。

    例如,如果您使用 GLUT,则在调用 glutInitDisplayMode 时,您必须提供 GLUT_DEPTH 作为参数。

    【讨论】:

    • 是的,我在渲染之前有这个,但我仍然得到相同的结果。
    • 顺便说一句,我是用VBO画的。
    • 这可能来自用户问题,例如:您是否真的从窗口 API 激活了深度帧缓冲区?例如,如果您使用 GLUT,则在调用 glutInitDisplayMode 时,您必须提供 GLUT_DEPTH 作为参数。
    • @AdamLee:如果您渲染到 FBO,请确保您的 FBO 具有深度附件。渲染到 FBO 时,不会使用默认帧缓冲区中的深度缓冲区。您需要创建一个深度渲染缓冲区,并将其附加到 FBO。
    【解决方案2】:

    这样称呼:

    gl.glDepthMask( true );
    

    我花了一天时间解决了这个问题:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 2020-02-28
      • 2015-10-31
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多