0

在 OpenGL 中渲染 3d 模型时遇到问题。我能够渲染它,但是当它渲染时,三角形看起来像是在争先恐后地占据上风。我不确定为什么会发生这种情况。这是我正在谈论的视频:Jittery Triangles。我在这个视频中使用了即时模式,但它使用 VBO 做同样的事情。

*编辑:谢谢蒂姆!由于某种原因,我将近平面设置为 0.00001 并将其更改为 0.1 解决了问题。

4

1 回答 1

3

这被称为 z-fighting,当 z-buffer 中的精度丢失时会发生这种情况。常见的原因有:

  1. 离相机很远的物体
  2. 物体非常靠近或在完全相同的位置
  3. 一个很远的剪裁平面
  4. 矩阵数学不准确

我会说#3是您问题的最可能原因。您必须始终注意浮点错误!

#4 是另一个可能的问题,但它通常只有在相机转换距离原点很远的情况下才会出现,并且可以通过使用双精度矩阵并将它们转换为浮点数来解决,然后再将它们传递给 gpu。

这是一篇关于投影矩阵 Z 缓冲区数学的好文章。

于 2012-04-11T19:22:24.757 回答