2013-02-16 64 views
0

我很好奇NURBS如何在GPU的/ OpenGL的圖形管線渲染。我知道在OpenGL和GLUT中有各種調用,可以使用glMap和glMapGrid輕鬆地從編碼的角度呈現NURBS對象,但是我沒有得到的是OpenGL通過執行此操作的過程。 NURBS背後的想法是使用曲線來定義曲面,而圖形管道似乎圍繞三角形光柵化和三角形網格構建,而NURBS則基於彎曲的貝塞爾曲線。NURBS在OpenGL圖形管線

那麼如何NURBS實際呈現,從(高級別)管道的角度?

+0

至於你提到的 - 直到一些「平坦」條件滿足,此時它呈現爲三角形反覆細分表面。 – 2013-02-16 08:21:10

回答

4

簡單的回答是,他們是而不是在OpenGL管道中處理,但必須轉換爲GL管道可以處理的東西。一般的方法可能首先轉換爲一個更實時友好的原始圖元,比如bezier補丁,然後在運行時將它們鑲嵌到三角形中。

鑲嵌可以是規則的,映射的網格到補丁,或者可以基於曲率,細分補丁更其中存在較高偏差。無論哪種方式,表面只在某些頂點真正評估,並呈現爲平面多邊形(儘管着色器可用於創建適當平滑變化的法線等)

glMap() et-al(以前用於幫助呈現貝塞爾補丁等)已被棄用,不再出現在現代OpenGL API中。如今你會使用着色器來處理曲面細分。