在OpenGL渲染时,三角形似乎正在战斗/跳跃

时间:2012-04-11 19:07:08

标签: opengl

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

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

1 个答案:

答案 0 :(得分:3)

这称为z-fighting,它发生在z缓冲区中精度丢失时。通常的原因是:

  1. 离相机很远的物体
  2. 对象非常靠近或完全相同的位置
  3. 很远的剪裁平面
  4. 矩阵数学不准确
  5. 我会说#3是导致问题的最可能原因。你总是要留意浮点错误!

    #4是另一个可能的问题,但它通常只会在距离原点很远的地方进行相机变换时出现,并且可以通过使用双精度矩阵并在将它们传递给gpu之前将它们转换为浮点数来解决。

    这是一篇关于projection matrix Z-buffer math的好文章。

相关问题