OpenGL超級寶典筆記6

第十章 曲線和表面

         學習通過對控制點和結點序列進行調整,創建彎曲和皺摺的表面,並學習通過幾個較小的表面和更容易處理的NURBSBezier表面來組成複雜的表面。還有,學習只用幾個指定邊界的點來繪製複雜的表面、形狀和模式,還學習使用GLU函數庫的分格器對象把凹形區域以及中間有洞的區域分解爲更爲簡單的凸形圖元。

a)  內部支持的表面 OpenGL所附帶的工具函數庫(GLU)包含了一些函數,它們可以渲染3種二次方程表面。這些二次方程函數可以渲染球體、圓柱體和圓盤。球體:void gluSphere(GLUQuadricObj *obj, GLdouble radius, Glint slices, Glint stacks);//後兩個參數分別表示球體的片(slice)和棧(stack)。圓柱體:void gluCylinder(GLUquadricObj *obj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, Glint slices, GLstacks);// topRadius參數爲0,從而形成一個圓錐體。圓盤:void gluDisk(GLUquadricObj *, GLdouble innerRadius, GLdouble outerRadius, GLint slices, Glint loops);//內半徑爲0時,表示一個實心的圓盤,不爲0則是有洞的圓盤。

b)  Bezier曲線和表面這是一種簡單的數學模型,僅僅指定幾個控制點就可以表示曲線和表面。控制點:曲線是有一組控制點來表示,這些控制點影響着曲線的形狀。對Bezier曲線而言,第一個控制點和最後一個控制點實際上是曲線的一部分,其他控制點的作用就像是磁鐵,把曲線拉向它們。求值器evaluate:需要制定控制點以及參數方程中uv參數的定義域。然後,通過調用適當的求值函數,OpenGL可以生成組成曲線或表面的點。

c)  NURBS 隨着添加的控制點越來越多,創建一條具有良好連續性的曲線將變得非常困難,通過NURBS函數獲得更高層次的控制。NURBS的真正威力在於我們可以對一條曲線的任一特定片段的4個控制點所施加的影響進行調整,以產生所需要的平滑性,這種調整是通過一系列的稱爲結點knot的值進行的。

d)  創建NURBS表面首先創建一個NURBS對象,這樣在調用NURBS相關函數對曲線或表面的外觀進行修改時就可以引用它。gluNewNurbsRender函數爲NURB創建一個渲染器,gluDeleteNurbsRenderer則用於銷燬這個渲染器。定義表面:一個控制點數組和結點序列傳遞給gluNurbsSurface函數,這個函數位於一對gluBeginSurface/gluEndSurface之間。修剪:在NURBS表面上創建刪除部分。在一對gluBeginSurface/gluEndSurface之間,調用gluBeginTrim函數,用gluPwlCurve函數指定一條修剪曲線,然後用gluEndTrim函數完成曲線的修剪。

e)  分格化(tessellation)爲了使OpenGL的速度儘可能快,所有的幾何圖元都必須是凸的。但是許多情況是凹或者是更爲複雜,有洞的多邊形。解決方案爲將該形狀分解爲更容易管理的三角形。分格器回調函數:void gluTessCallback(GLUTesselator *tobj, GLenum which, void (*fn)());第一個參數是分格器對象,第二個參數指定被註冊的回調函數的類型,最後一個參數是個指向回調函數本身的指針。

 

第十一章 這就是管線:更快的幾何圖形渲染

                  這章討論了提高幾何圖形吞吐量的幾種不同方法,使用索引數組、顯示列表和頂點數組等方法。還學習如何使用頂點緩衝區對象實現最大限度的性能優化,既有顯示列表的速度優勢,又具有頂點數組的極大靈活性。

         a)顯示列表爲了提高性能,運用預批處理的方法,使它們能夠快速複製到命令緩衝區,以獲得更快的執行速度,這種預編譯的命令集稱爲顯示列表。

         b)頂點數組創建一些數組,存儲模型所使用的頂點數據,從而大大地節省計算時間。步驟:加載幾何圖形,啓用數組,讀取數據,用數據繪圖。

         c)索引頂點數組就是並不按順序從頭遍歷到尾的頂點數組,它的訪問順序是由一個單獨的索引數組指定。可以節省內存,並減少變換開銷。

         d)頂點緩衝區對象當使用頂點數組時,可以把單個的數組從客戶內存傳輸到圖形硬件,此特性稱爲頂點緩衝區對象,允許我們按照與加載和管理紋理相似的方式使用和管理頂點數組數據。步驟:使用頂點數組,然後創建緩衝區對象,方式與創建紋理對象相似。

發佈了140 篇原創文章 · 獲贊 10 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章