2012-01-16 61 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