为什么我的opengl场景有深度缓冲问题?

qwe*_*guy 5 c++ opengl

我正在从文件中读取高度图,并使用三角形条渲染它.

高度图:

在此输入图像描述

它运作良好,这是它的外观:

在此输入图像描述

它看起来不错,但只是从这个方向来看.如果我稍微转动相机,则会开始发生这种情况:

在此输入图像描述

似乎我的深度缓冲区已损坏.我启用它,它适用于其他几何体.

以前有人有这样的问题吗?我甚至都不知道要搜索什么.谢谢!

编辑:

我的投影矩阵设置:

1.2062851 0.0 0.0 0.0

0.0 2.1445069 0.0 0.0

0.0 0.0 -1.0 -1.0

0.0 0.0 -0.2 0.0

_fieldOfView(50.0f),
_nearPlane(0.1f),
_farPlane(10000.0f),
_viewportAspectRatio(16.0f/9.0f)
Run Code Online (Sandbox Code Playgroud)

qwe*_*guy 1

感谢大家的有用评论。我发现了这个问题,并希望其他遇到此问题的人会发现该解决方案很有用。我必须在每个帧之前重新启用深度缓冲(glEnable(GL_DEPTH_TEST)),而不是在渲染器创建时重新启用深度缓冲。我的印象是这是一个全局状态,因此不需要每次渲染时都重置。

最终产品如下所示,没有深度缓冲区问题:

在此输入图像描述

无论如何,希望这对某人有帮助。

  • 您可能会在程序中的某个位置更新“GL_DEPTH_TEST”的状态,请确保搜索“GL_DEPTH_TEST”的所有实例,以清理您的处理方式。 (7认同)
  • 实际上`glEnable(GL_DEPTH_TEST)`是一个全局状态。 (6认同)