1. 程式人生 > >OpenGL繪製方式

OpenGL繪製方式

什麼是圖元:圖元是組成3D物體的基礎單元,是頂點的集合以預定義的方式結合在一起。而預定義的方式可以是一維的點,二維的線,甚至是三維的多邊形等。 常見的圖元型別如圖所示:
這裡寫圖片描述

繪製點常用介面:點的圖元為GL_POINTS呈正方形狀,不受透視除法影響(也就是不近大遠小)。點的大小都會自動修正成允許的間距和範圍內的值。
1.glPointSize(GLFloat size):設定預設點大小。
2.glGetFloatv(GL_POINT_SIZE_RANGE, GLFloat size[2]):獲取點的最小和最大值,並存儲在size引數中。
3.glGetFloatv(GL_POINT_SIZE_GRANULARITY, GLFloat* step):獲取相鄰點之間的最小間距。
4.glEnable(GL_PROGRAM_POINT_SIZE):使用程式點大小模式來設定點大小,其中點大小設定方式為:“gl_PointSize = 數值”。

繪製線常用介面:兩點組合成一條線,在繪製時通常可以繪製線,線段和線環。它們之間區別分別如下:
1.線:圖元為GL_LINES。是任意兩個點組成的一條線。
2.線段:圖元為GL_LINE_STRIP。是任意一個點可以作為起點和終點,這樣一個點就要繪製兩次,效能相對繪製線而言會低一些,但是繪製的線是連續的。
3.線環:圖元為GL_LINE_LOOP。是線上段的基礎上記錄一下起點,當線段繪製完畢後就從終點到起點之間再繪製一條線,這樣就將所有點繪製一條閉合的環。

繪製介面如下:
1.glLineWidth(GLFloat width):設定線寬,寬度值為width大小。

繪製三角形常用介面

:可以繪製三角形,三角形帶和三角形環。
它們之間區別如下:
1.三角形:圖元為GL_TRIANGLE。三角形是OpenGL唯一支援的多邊形,也是光柵化硬體最喜歡的多邊形。
2.三角形帶:圖元為GL_TRIANGLE_STRIP。是一串相連的三角形。由於只需繪製第一個三角形,其他三角形只需要指定一個頂點,從而可以節省大量時間開銷。
3.三角形環:圖元為GL_TRIANGLE_FAN。是一組圍繞同一個中心頂點相連的三角形。跟三角形帶一樣,由於繪製的頂點數變少,從而可以節省大量時間開銷。

繪製介面如下:
1.glFrontFace(GL_CW/GL_CCW):GL_CW表示指定順時針方向環繞的多邊形是正面;GL_CCW表示指定逆時針方向環繞的多邊形是正面,這也是預設設定方式。

繪製多邊形常用介面:三角形也是屬於一種多邊形。繪製其他多邊形時,常用介面如下:
1.glPolygonMode(GLenum face, GLenum mode):按照指定面和指定模式來繪製多邊形。其中face通常可以取正面(GL_FRONT),背面(GL_BACK)以及正反面(GL_FRONT_AND_BACK)。mode通常可以取線(GL_LINE),點(GL_POINT)以及實心填充(GL_FILL)。
2.glPolygonOffset(GLfloat factor, GLfloat uints):多邊形偏移函式。通常用在同一個畫素上存在相同深度值時,為了讓深度測試針對相同值的畫素進行正確的繪製,就需要對指定畫素的深度值進行偏移了。