XNA中的Z顺序实现:循环重叠?

时间:2012-09-13 08:32:03

标签: xna z-index overlap overlapping z-order

实现z阶系统的最佳方法是什么,可以使用以下内容:

  

有4个矩形:A,B,C和D.

     

矩形A与矩形B重叠。

     

矩形B与矩形C重叠。

     

矩形C与矩形D重叠。

     

矩形D与矩形A重叠。

就像一个纸板箱。我相信它被称为循环重叠。

我知道这是一个奇怪的问题,但我只是想知道......:)

1 个答案:

答案 0 :(得分:3)

关于纸板箱示例的事实是,纸板碎片并未完全对准相机。本质上,它是一个(相当平坦的)三维结构,略微倾斜的平面彼此重叠。就纸板箱而言,它们也不是平面的,而是略微弯曲以便关闭盒子。在MS-paint伪视角中:

enter image description here

通过倾斜平面使它们重叠,可以在3D中实现。这是painters algorithm失败的情况,也是Z buffer派上用场来解决哪个对象实际上遮挡另一个的原因之一。

如果您在纯粹的2D世界中工作,并且您无法倾斜平面以实现伪3D效果,那么您需要细分平面并使用与您不同的Z水平绘制重叠部分用于剩余的盒子 - 基本上做自己的剪辑。

你可以通过做某种Z缓冲技巧来模仿同样的东西,但基本上你应该使用3D结构来解决什么是3D问题。