2012-04-04 109 views
1

是由光柵化器使用透視校正插值的每個變化的頂點值(或者在頂點着色器「出」的新版glsl值中)?這是依賴於硬件嗎?glsl和變化值的透視校正

當剪切發生時,剪切頂點處的值如何計算?

我嘗試撤消透視校正並注意被剪切的多邊形的奇怪行爲,我想更好地理解幕後發生的事情。

回答

3

Pre-GL 3.0,影響透視正確插值的唯一方法是提示。通常,glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)將在所有變化上激活透視正確插值,而glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST)通常會將其關閉。請注意,這些是驅動程序提示,僅此而已;司機不要這樣反應。

在GLSL 1.30+(OpenGL 3.0+)中,您可以強制每個輸出/輸入以特定方式進行插值。 interpolation qualifiersmooth意味着透視正確;如果不指定限定符,這是默認值。 noperspective意味着...顯而易見。

剪切總是以這樣一種方式完成,就好像它沒有被剪切(或在硬件精度內足夠接近)。因此,如果某個值是正確插值的透視圖,那麼爲剪切的頂點生成的值也必須使用透視正確的插值。

+0

哦,這聽起來會讓事情變得更容易!將立即嘗試!謝謝!還有一件事:gl_FragCoord.z是插值的,沒有應用透視校正,是正確的? – user1282931 2012-04-04 21:29:45