xna - XNA 中的 Z 顺序实现 : cyclic overlapping?

标签 xna z-index overlap overlapping z-order

实现 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伪透视中:

enter image description here

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

如果您在纯 2D 世界中工作,并且无法倾斜平面来实现您所追求的伪 3D 效果,则需要分割平面并使用与您不同的 Z 高度绘制重叠部分用于盒子的其余部分 - 基本上是您自己的剪辑。

您也许可以通过执行某种 Z 缓冲区技巧来模拟相同的事情,但本质上您应该使用 3D 结构来解决 3D 问题。

关于xna - XNA 中的 Z 顺序实现 : cyclic overlapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402351/

相关文章:

google-sheets - 查找许多重叠时间的总持续时间

android - 如何在 android jetpack compose 中相互重叠列表项?

c# - 如何在不装箱的情况下存储不同类型的结构

xna - 我如何计算出哪个物体最接近相机?

visual-studio-2012 - 发布先决条件选项中缺少 XNA Redistributable

javascript - 在不改变 z 索引的情况下与下面的 HTML 元素交互

javascript - 悬停时表格行轮廓的想法? CSS 大纲在 Webkit 中的 tr 上失败

c# - 在 Windows Phone 上设计媒体播放器的好方法是什么?

javascript - 如何让可拖动的 jQuery UI 对话框出现在 Google 地球插件顶部?

Jquery Scrolling div - 防止进入网站页脚