在3D场景中处理2D z-indexing的正确方法(DirectX)

时间:2008-12-11 21:02:21

标签: 3d directx 2d orthogonal

我需要实现以下目标:

两个2D四边形看起来好像是一个堆叠在另一个上面(就像相同纹理的两半),但实际上是在z轴上用n个坐标分开。因此,如果3D对象在它们之间穿过,则一半出现在对象前面而另一半出现在后面。

我可以通过将正交投影应用于两个四边形,然后将正常视角应用于其余三维数据来实现这一目标吗?这会丢失深度数据吗?

我希望我的例子不会过于误导!

1 个答案:

答案 0 :(得分:1)

简单的答案是肯定的,如果你在渲染你的四边形时打开z写。除非您明确地执行此操作,否则不会丢弃您的z数据。

然而,获得orthagonal深度与投影深度很好地结合可能会很棘手。 (我从未尝试过,但我想它不会很好地排队。)在这种情况下,最好做以下其中一项:

  • 在透视视图中渲染所有几何体
  • 以正交视图渲染所有几何体
  • 在非z测试的排序图层(从前到后)渲染正交几何图形,在两者之间渲染透视几何图形。

我假设你已经知道前两种方法的缺点,所以如果这是可以接受的,那取决于你。我认为第三种方法是最传统的方法。