【问题标题】:Depth Buffer in OpenGLOpenGL中的深度缓冲区
【发布时间】:2009-06-25 20:23:33
【问题描述】:

我正在尝试使用 OpenGL 绘制一系列矩形,但一些应该出现在矩形下方的矩形出现在其上方。

启用我正在使用的深度功能

glClearDepth(1.0f);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);

我在每次抽奖开始时使用 gluLookAt。这是问题的图像。蓝色矩形的 y 值高于绿色矩形。

正如您在上图中所见,一些绿色矩形出现在蓝色矩形上方。知道为什么会发生这种情况以及我能做些什么来解决它吗?这可能与我绘制矩形的顺序有关吗?

【问题讨论】:

    标签: opengl


    【解决方案1】:

    当您清除颜色缓冲区时,您是否也清除了深度缓冲区?

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    您确定图片不正确吗?其中一些绿色方块实际上
    看起来确实比蓝色的要高。

    【讨论】:

      【解决方案2】:

      您是否在您使用的任何窗口系统中启用了深度缓冲区?例如,使用 glut 您可能需要: glutInitDisplayMode(GLUT_DEPTH | ....);

      【讨论】:

      • 我将 qt 用于我的窗口工具包。我不知道有这样的功能。你知道是否有一个我应该调用类似于 glut 的功能。
      • 在QGLFormat 对象中,您应该能够使用depth 和setDepth 方法检查是否启用了深度缓冲区。
      • 谢谢。这个答案拯救了我的一天。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2014-12-11
      相关资源
      最近更新 更多