XNA 3D透明度取决于绘图顺序?

时间:2013-03-20 10:50:24

标签: 3d transparency xna-4.0

我正在绘制两个3D对象,它们都可以独立地从不透明变为透明,并且它们可以在它们之间相交(所以你不能说其中一个之前另一个)。查看图像以便更好地理解(其中一个对象是地形,另一个是区域):

Correct draw

现在,如果我对它们都应用透明度,并在区域之前绘制地形,则地形不是透明的,而是区域,但区域是:

Incorrect transparency

最后,如果我在地形之前绘制区域,那么该区域在地形方面不是透明的:

Incorrect transparency 2

问题:如何在不依赖绘图顺序的情况下使所有对象对其余对象透明?

1 个答案:

答案 0 :(得分:0)

你做不到。至少,不是简单的 - 您正在进行的操作本质上是依赖于顺序的。当从不同的视点和半透明渲染时,甚至你自己的地形也会出现问题。

所以你要么改变你正在做的事情,要么你使用非依赖顺序的操作(例如加法或减法混合,尽管这可能不会在你的情况下得到有用的结果)或探索其他选项用于控制绘制顺序,而不仅仅是在对象级别进行排序。

例如,您可以调查深度剥离,这涉及在多个过程中渲染场景,合成图层中的像素。这可以处理相交的多边形,但是需要渲染的层数越多,它就越贵。