2011-01-20 139 views
2

我正在使用三角形條創建四邊形。問題是當我嘗試使用矩形紋理來繪製它時,我想要在形狀上均勻插值。四邊形上的OpenGL ES 1.1中的紋理變形問題由三角形條形成

只要形狀是一個矩形或矩形的仿射變換,我就會有兩個相同的三角形構建形狀,一切都很順利。但是對於任意形狀,三角形具有不同的形狀,並且沿着三角形的公共邊緣自然發生變形。

_____  ______  _____ 
    |  | / /  \ /
    |_____| /_____/   \_/ 

    Ok   Ok   Not Ok 

我想這將是相當簡單的解決這個與ES 2.0自定義着色,但如何實現它在ES 1.1嗎?

+0

那麼你是如何解決它的? – Trainee4Life 2012-04-22 16:15:10

回答

2

說穿了,硬件只能做紋理座標的線性插值,如果你不提供透視/深度信息。

線性插值不允許正確處理導致問題的情況。

要在您的邊緣有適當的插值,您必須在四邊形中引入透視信息。

您應該可以在此NVidia白皮書中找到更多信息:Projective Texture Mapping

+0

太棒了!感謝您的參考。 – Nuoji 2011-01-24 13:54:27

2

將方形/矩形紋理映射到任意四邊形的一種方法是投影插值。我寫了an article顯示如何做到這一點。這着重於設置插值的數學運算,而在rotoglup的答案中鏈接的「投影紋理映射」論文着重配置API進行插值。

短版:你插值的方式類似的GPU如何做到這一點的角度來看,正確的渲染穿過院子的UV(正如你可能已經注意到,並產生兩個三角形之間的可見接縫) 。爲此,需要爲四邊形的每個頂點計算一個錯誤的「深度」值,並根據此「深度」使用齊次座標進行插值。全部細節在上面鏈接的文章中。

我不確定OpenGL ES 1.1中是什麼和不可能的,但是如果它通過提供3維或4維UV值支持投影紋理,那麼這應該是適用的。

+0

FWIW,我更新了我的答案中的斷開鏈接。 – rotoglup 2012-05-26 10:27:53

相關問題