如何使用openGL避免叠加对象上的毛刺?

时间:2013-06-26 18:42:03

标签: opengl

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

这会渲染一些视觉故障,如您所见: enter image description here

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

有没有办法解决这个问题而不会抵消我的所有物体?

1 个答案:

答案 0 :(得分:4)

这被称为深度战斗 Z-Fighting 并且被引起,在投影之后深度值经历四舍五入并且当深度测试发生时深度的获胜者测试取决于参与片段的深度值的舍入。

  

有没有办法解决这个问题而不会抵消我的所有物体?

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