在 OpenGL 中渲染 3d 模型时遇到问题。我能够渲染它,但是当它渲染时,三角形看起来像是在争先恐后地占据上风。我不确定为什么会发生这种情况。这是我正在谈论的视频:Jittery Triangles。我在这个视频中使用了即时模式,但它使用 VBO 做同样的事情。
*编辑:谢谢蒂姆!由于某种原因,我将近平面设置为 0.00001 并将其更改为 0.1 解决了问题。
在 OpenGL 中渲染 3d 模型时遇到问题。我能够渲染它,但是当它渲染时,三角形看起来像是在争先恐后地占据上风。我不确定为什么会发生这种情况。这是我正在谈论的视频:Jittery Triangles。我在这个视频中使用了即时模式,但它使用 VBO 做同样的事情。
*编辑:谢谢蒂姆!由于某种原因,我将近平面设置为 0.00001 并将其更改为 0.1 解决了问题。
这被称为 z-fighting,当 z-buffer 中的精度丢失时会发生这种情况。常见的原因有:
我会说#3是您问题的最可能原因。您必须始终注意浮点错误!
#4 是另一个可能的问题,但它通常只有在相机转换距离原点很远的情况下才会出现,并且可以通过使用双精度矩阵并将它们转换为浮点数来解决,然后再将它们传递给 gpu。
这是一篇关于投影矩阵 Z 缓冲区数学的好文章。