2012-01-16 63 views
0

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

here

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

在这里,我不知道为什么“由两个共面的图元生成相同的像素Z值之间的差异可以在X或Y的最大的Z-斜率大”

回答

2

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

因此,要将某些东西放在前面,无论在哪个像素中计算z坐标,都必须确保它在前面。

+0

感谢您的回复。我还是不明白。像素的左右边缘是什么意思?如果整个多边形相对于视点进一步移动了相同的距离(这里我的意思是距离与多边形的斜率无关),发生了什么?还有z战斗问题吗? – ezheng 2012-01-16 19:27:33