我使用glFrustum()
透视模式渲染了一个 3D 场景。然后,我将一个 2D 对象放置在 3D 场景上,作为特定 3D 对象的标签。我已经计算了 3D 对象的 2D 位置,使用gluProject()
在哪个位置放置我的 2D 标签对象。使用glOrtho()
正交模式渲染 2D 标签对象。这完美地工作并且 2D 标签对象悬停在 3D 对象上。
现在,我要做的是给 2D 对象 az 值,以便它可以使用深度缓冲区隐藏在场景中的其他 3D 对象后面。我已经给出了我知道应该被深度缓冲区隐藏的 2D 对象 az 值,但是当我渲染对象时它总是可见的。
那么问题来了,为什么 2D 对象仍然可见而不是隐藏?
我确实在某处读到正交投影和透视投影存储不兼容的深度缓冲区值。这是真的吗,如果是这样,我该如何在它们之间进行转换?