2008-12-11 51 views
0

我需要实现以下目标:正确的方式来处理2D的z索引的3D场景(的DirectX)

两个2D四边形看起来好像他们是在的其他(如两半的顶部堆叠相同的纹理),但实际上在z轴上由n个坐标分隔。所以如果一个3D物体在它们之间通过,那么一半出现在物体前面,另一半出现在物体后面。

我可以通过对两个四边形应用正交投影,然后对其余三维数据进行正常透视来实现这一点吗?这会损失深度数据吗?

我希望我的例子不是太误导人!

回答

1

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

但是,获得与投影深度很好地匹配的正方形深度可能会非常棘手。 (我从来没有尝试过,但我想它不会很好地排队。)在这种情况下,最好的办法是请执行下列操作之一:

  • 渲染所有的几何中的透视图
  • 渲染在正交视图中的所有几何图形
  • 在未经z检验的已排序图层(回到前面)中渲染正交几何图形,从而呈现两者之间的透视几何图形。

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