如何避免使用 openGL 在叠加对象上出现故障?

Que*_*yot 1 opengl

例如,我想堆叠两个立方体 A 和 B。问题是 A 的顶面与 B 的底面完全相同。

如您所见,这会呈现一些视觉故障: 在此处输入图片说明

请注意,有时也可以在某个角度(不是预期的)通过任何立方体看到粉红色网格。

有没有办法在不抵消我所有对象的情况下解决这个问题?

dat*_*olf 5

这称为深度战斗Z 战斗,其原因是,投影后深度值会进行四舍五入,当深度测试发生时,深度测试的获胜者取决于参与片段的深度值的四舍五入。

有没有办法在不抵消我所有对象的情况下解决这个问题?

是的,有一些使用模板缓冲区的技术,但需要注意的是,它仅适用于凸几何。首先,您使用深度测试和深度写入渲染重叠对象,但没有颜色写入,设置模板蒙版。下一次迭代启用背面剔除并在禁用深度测试、启用模板测试(传递使用的模板值)和启用颜色写入的情况下进行绘制。在模板蒙版的区域内,事物将根据 Painter 的算法进行过度绘制(即图层在绘制时按顺序排列)。