为什么glPolygonOffset与多边形的斜率有关

时间:2012-01-16 05:09:57

标签: opengl depth-buffer

我正在使用OpenGL进行阴影贴图。将深度与阴影贴图进行比较时存在z-fighting问题。我可以使用glPolygonOffset解决问题。我知道这个函数有助于推动(或拉动)多边形,以便解决z-fighting问题。 但我对glPolygonOffset函数有疑问。我不清楚为什么多边形的斜率与偏移有关。

来自here

  

需要factor参数来确保填充图元的正确结果,这些图元几乎是观察者的边缘。在这种情况下,由两个共面基元生成的相同像素的Z值之间的差异可以与X或Y中的最大Z斜率一样大。对于几乎边缘开启的基元,该Z斜率将是大的,并且几乎不存在用于面对面的原语。 factor参数允许您将此类型的变量差异添加到生成的深度偏移中。

这里我不知道为什么“两个共面基元生成的同一像素的Z值之间的差异可能与X或Y中的最大Z斜率一样大。”

1 个答案:

答案 0 :(得分:2)

如果多边形具有Z斜率,则像素的左右边缘之间的z坐标存在差异。

所以要把一些东西放在前面,无论在像素中的哪个位置计算z坐标,你都必须确保它在前面。