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

XNA 3D透明度取决于绘图顺序?,3d,transparency,xna-4.0,3d,Transparency,Xna 4.0,我画了两个3D对象,它们都可以独立地从不透明变为透明,并且它们可以在它们之间相交(所以你不能说其中一个在另一个之前)。查看图像以便更好地理解(一个对象是地形,另一个是区域): 现在,如果我将透明度应用于这两个区域,并在区域之前绘制地形,则地形相对于区域不是透明的,但区域是: 最后,如果我在地形之前绘制区域,那么该区域对于地形是不透明的: 问题:如何在不依赖绘图顺序的情况下使所有对象对其余对象透明?您不能。至少,不是微不足道的——您正在执行的操作本质上依赖于顺序。当从不同的视点和半透明性渲染

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

现在,如果我将透明度应用于这两个区域,并在区域之前绘制地形,则地形相对于区域不是透明的,但区域是:

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


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

您不能。至少,不是微不足道的——您正在执行的操作本质上依赖于顺序。当从不同的视点和半透明性渲染时,即使您的地形本身也会出现问题

因此,实际上,您必须更改正在执行的操作,以便使用非顺序相关的操作(例如加法或减法混合,尽管这在您的情况下可能不会得到有用的结果),或者探索其他选项来控制绘图顺序,而不仅仅是在对象级别进行排序

例如,可以研究深度剥离,这涉及在多个过程中渲染场景,在层中合成像素。这可以处理相交多边形,但需要渲染的层越多,渲染成本就越高