实现 z 顺序系统的最佳方法是什么,可以实现如下所示的功能:
There are 4 rectangles: A, B, C and D.
Rectangle A overlaps Rectangle B.
Rectangle B overlaps Rectangle C.
Rectangle C overlaps Rectangle D.
Rectangle D overlaps Rectangle A.
就像一个纸板箱。我相信这称为循环重叠。
我知道这是一个奇怪的问题,但我只是想知道......:)
最佳答案
关于纸板箱示例的问题是,纸板片没有完全与相机对齐。本质上,它是一个(相当平坦的)3D 结构,由彼此重叠的略微倾斜的平面组成。就纸板箱而言,它们也不是平面的,而是稍微弯曲以关闭盒子。在MS-paint伪透视中:
这在 3D 中可以通过倾斜平面使它们重叠来实现。在这种情况下 painters algorithm失败,并且是 Z buffer 的原因之一可以方便地解决哪个对象实际上遮挡了另一个对象。
如果您在纯 2D 世界中工作,并且无法倾斜平面来实现您所追求的伪 3D 效果,则需要分割平面并使用与您不同的 Z 高度绘制重叠部分用于盒子的其余部分 - 基本上是您自己的剪辑。
您也许可以通过执行某种 Z 缓冲区技巧来模拟相同的事情,但本质上您应该使用 3D 结构来解决 3D 问题。
关于xna - XNA 中的 Z 顺序实现 : cyclic overlapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402351/