【发布时间】:2015-11-06 19:54:33
【问题描述】:
我正在尝试编写一个 3d 图形引擎,但在以正确的顺序绘制形状时遇到了一些问题。
当我将三角形的点转换为窗口空间,即与屏幕上的位置直接相关的二维空间时,除了每个点的 x 和 y 位置外,我还为它们分配了一个深度变量,用于存储该点在 3d 空间中距离观察者多远。
目前,我渲染的唯一形状是三角形。我当前的渲染顺序算法按三角形 3 点的平均深度对三角形进行排序。我一开始就知道它并不完美,但我想要一个占位符进行测试。
出于测试目的,我构建了一个顶部开口的方形盒子,每边颜色不同,由 2 个三角形组成,如下所示:
从上图可以看出,我使用的算法大部分时间都有效。但是,在某些角度和位置,三角形会以错误的顺序呈现,如下所示:
如您所见,框底部的青色三角形之一在侧面的黄色三角形之一之前绘制。显然,按点的平均深度对三角形进行排序并不令人满意。
有没有更好的排序形状的方法,以便它们以正确的顺序呈现?
【问题讨论】: