2011-10-31 81 views
1

我是CAD開發的初學者&想了解一些關於OpenGL的知識。 我的主要目標是代表圓錐,擺線,外擺線,內擺線,漸開線等。 我可以直接使用trigonometry代表它們,還是需要將這些曲線轉換爲B樣條? 其實我現在正在開發內核&想開發內核,所以我不能顯示上面提到的曲線(如果我不能用圖形表示它們,在內核中不支持這些曲線) 我對OpenGL不太瞭解,所以請原諒我,如果我的問題真的很愚蠢! 我試過搜尋here,但找不到任何有用的東西。曲線在OpenGL中表示

回答

4

OpenGL可以使用評估器甚至NURBS使用GLU API直接呈現貝塞爾曲線和曲面。有關更多信息,請參閱OpenGL Programming Guide。所以你可以將這些曲線和表面轉換成這種形式。

但我強烈建議您不要使用這些功能,因爲它們已被棄用(從較新的OpenGL版本的核心中刪除),現在很可能在軟件中而不是在硬件中實現。

相反,您應該爲這些曲線和曲面實施您自己的評估程序,以指定的採樣率評估相應的方程並生成一個簡單的頂點數組(可能和索引數組)。這樣你可以保持未來就緒狀態,因爲這些可以使用VBO(在現代OpenGL中渲染某些東西的唯一方式)呈現爲標準線條或三角網格。

而且你甚至可以保持API不可知性,因爲一個普通的頂點數組也可以使用Direct3D或其他方法呈現。這樣你就不會用繪圖調用污染你的CAD內核。它所需要的只是將參數曲線和曲面轉換爲頂點數組(也許是索引)的功能,內核的客戶端/用戶負責使用他喜歡的任何API繪製這些曲線。

+0

非常感謝和+1 –

3

如果我沒有錯,OpenGL只適用於平面多邊形。儘管如此,你可以檢查GLUT庫是否有任何方法來繪製上述數字,或谷歌爲這些數字的.obj,並縮放,旋轉和翻譯他們到所需的位置。

+2

您可以輕鬆使用opengl和direct3d來渲染線條,點或多邊形,即不限於多邊形。唯一的問題是你需要將這條線擦除成頂點並告訴圖形api在它們之間畫線。 – edvaldig

+0

這就是.obj的意思。它包含對象的頂點和麪,並且您可以執行縮放,平移和旋轉,因此您可以重複使用單個.obj來構建任意數量的圖形。 –

+2

@JosepRodríguezLópez但是你並不需要一個.obj或任何文件。如果你有一個參數表示,你可以在離散樣本上評估它。這在CAD程序中可能比加載固定模型更好,至少如果曲線/曲面變得更復雜,如NURBS。 –