2009-07-10 57 views
1

我在使用LineList绘制一个网格和重叠它的另一个(较大)网格会由于z战斗而使它​​们闪烁的问题。当多边形和线条重叠时,使用DepthBias将减少这种问题,但在两个单独的DrawIndexedPrimitives调用中绘制线条时显然不起作用。在XNA中的线条之间的Z战斗

目前,我通过在第二个网格的位置添加一个指向相机的小矢量来“固定”它以模拟DepthBias,但是当相机远离网格时问题仍然存在。

有没有更好的方法来解决这个问题?

+0

嘿,约翰,你已经解决了你的问题?我很好奇这个解决方案。 – 2010-07-08 21:41:07

回答

0

从我听说你应该看看你的剪辑平面。示例线程:xna.com

编辑:不知道,关于网格,但你可以随时尝试! :)

0

不幸的是,这是由于32位浮点数的精度有限(深度缓冲区使用)而导致的自然行为。您可以翻译一组最小行(因为你现在做的),并尽量选择你的裁剪平面接近尽可能彼此(如罗布提到的),或:

  1. 通过设置device.RenderState.CompareFunction = CompareFunction.Allways禁用深度缓冲,不通过实际禁用缓冲区!
  2. 绘制所有线条。
  3. 通过颠倒步骤1中的更改​​再次启用深度缓冲区。
  4. 绘制所有其他几何图形。