2012-06-12 42 views
3

RedBook中的NURBS章節已被棄用,包括實用程序庫:「即使 某些功能是GLU庫的一部分,但它依賴於已從核心OpenGL庫中刪除的 功能。」NURBS和opengl 4.2核心呢?

這是否意味着OpenGL 4.2實際上缺少用於處理NURBS曲線和曲面的C++工具包?有一些商業的第三方工具包,但它們不是跨平臺的(主要是窗口)

...?

+0

請添加信息,爲您需要NURBS。 –

+0

我試圖達到類似揮舞表面的橫幅的效果,但我希望獲得很好的無序運動,除了簡單的揮杆。操縱結點位置似乎比影響單個基元頂點更好 – Ahk4iePaiv8u

回答

4

在OpenGL-3及更高版本中,您可以使用幾何體和頂點着色器,OpenGL-4甚至提供了鑲嵌着色器。他們提供一切實現GPU加速NURBS和貝塞爾曲線和曲面。 OpenGL-1.1的評估者從未在大多數硬件上加速GPU。所以實際上你沒有他們會更好。

只需在着色器中實現NURBS或Bezier評估器,並將頂點作爲表面採樣點發送。

2

關於您關於紅皮書的問題,GLU庫沒有被OpenGL ARB正式棄用,而只是被忽略。但是,GLU使用了OpenGL 3.0中不推薦使用的特性,並在OpenGL 3.1中將其刪除:即時模式渲染,顯示列表,矩陣堆棧等等。具體到NURBS,他們使用了其中的幾個特性(假設與你的OpenGL實現相關的GLU庫是基於GLU的SGI版本的,大多數都是),所以這些特性在覈心環境中不起作用。這不是缺乏基於C++的GLU庫,而是GLU使用從現代OpenGL中刪除的功能。

@datenwolf - 不完全。 GLU NURBS庫支持修剪曲線,這在所有使用OpenGL頂點着色器管線(即頂點,鑲嵌和幾何着色)的情況下都很難實現。具體來說,支持繞線規則和正確的修剪,同時考慮修剪曲線交叉是非常困難的(可能是計算着色器和片段着色器中的奇特工作的組合)。你可以使用alpha紋理進行修剪,但是你會遭受別名結果,但這是一個快速修復。