glBegin(GLenummode) glEnd -ANDSTRAN

函數(shù)原型:

void glBegin(GLenummode)

void glEnd(void)

參數(shù)說(shuō)明:

mode:創(chuàng)建圖元的類型??梢允且韵聰?shù)值

GL_POINTS:把每一個(gè)頂點(diǎn)作為一個(gè)點(diǎn)進(jìn)行處理,頂點(diǎn)n即定義了點(diǎn)n,共繪制N個(gè)點(diǎn)

GL_LINES:把每一個(gè)頂點(diǎn)作為一個(gè)獨(dú)立的線段,頂點(diǎn)2n-1和2n之間共定義了n條線段,總共繪制N/2條線段

GL_LINE_STRIP:繪制從第一個(gè)頂點(diǎn)到最后一個(gè)頂點(diǎn)依次相連的一組線段,第n和n+1個(gè)頂點(diǎn)定義了線段n,總共繪制n-1條線段

GL_LINE_LOOP:繪制從第一個(gè)頂點(diǎn)到最后一個(gè)頂點(diǎn)依次相連的一組線段,然后最后一個(gè)頂點(diǎn)和第一個(gè)頂點(diǎn)相連,第n和n+1個(gè)頂點(diǎn)定義了線段n,總共繪制n條線段

GL_TRIANGLES:把每個(gè)頂點(diǎn)作為一個(gè)獨(dú)立的三角形,頂點(diǎn)3n-2、3n-1和3n定義了第n個(gè)三角形,總共繪制N/3個(gè)三角形

GL_TRIANGLE_STRIP:繪制一組相連的三角形,對(duì)于奇數(shù)n,頂點(diǎn)n、n+1和n+2定義了第n個(gè)三角形;對(duì)于偶數(shù)n,頂點(diǎn)n+1、n和n+2定義了第n個(gè)三角形,總共繪制N-2個(gè)三角形

GL_TRIANGLE_FAN:繪制一組相連的三角形,三角形是由第一個(gè)頂點(diǎn)及其后給定的頂點(diǎn)確定,頂點(diǎn)1、n+1和n+2定義了第n個(gè)三角形,總共繪制N-2個(gè)三角形

GL_QUADS:繪制由四個(gè)頂點(diǎn)組成的一組單獨(dú)的四邊形。頂點(diǎn)4n-3、4n-2、4n-1和4n定義了第n個(gè)四邊形。總共繪制N/4個(gè)四邊形

GL_QUAD_STRIP:繪制一組相連的四邊形。每個(gè)四邊形是由一對(duì)頂點(diǎn)及其后給定的一對(duì)頂點(diǎn)共同確定的。頂點(diǎn)2n-1、2n、2n+2和2n+1定義了第n個(gè)四邊形,總共繪制N/2-1個(gè)四邊形

GL_POLYGON:繪制一個(gè)凸多邊形。頂點(diǎn)1到n定義了這個(gè)多邊形。

函數(shù)說(shuō)明:

glBegin和glEnd函數(shù)限定了一組或多組圖元的定點(diǎn)定義。

3用法小結(jié)

1.在glBegin()和glEnd()之間可調(diào)用的函數(shù)

函數(shù) 函數(shù)意義

glVertex*() 設(shè)置頂點(diǎn)坐標(biāo)

glColor*() 設(shè)置當(dāng)前顏色

glIndex*() 設(shè)置當(dāng)前顏色表

glNormal*() 設(shè)置法向坐標(biāo)

glEvalCoord*() 產(chǎn)生坐標(biāo)

glCallList(),glCallLists() 執(zhí)行顯示列表

glTexCoord*() 設(shè)置紋理坐標(biāo)

glEdgeFlag*() 控制邊界繪制

glMaterial*() 設(shè)置材質(zhì)

表7-2 在glBegin()和glEnd()之間可調(diào)用的函數(shù)

glVertex3f()表示了該函數(shù)屬于 gl庫(kù),參數(shù)是三個(gè)float型參數(shù)指針。我們用glVertex*()來(lái)表示這一類函數(shù)。

基本庫(kù)

2.幾何圖元類型和說(shuō)明

類型 說(shuō)明

GL_POINTS 單個(gè)頂點(diǎn)集

GL_LINES 多組雙頂點(diǎn)線段

GL_POLYGON 單個(gè)簡(jiǎn)單填充凸多邊形

GL_TRIANGLES 多組獨(dú)立填充三角形

GL_QUADS 多組獨(dú)立填充四邊形

GL_LINE_STRIP 不閉合折線

GL_LINE_LOOP 閉合折線

GL_TRIANGLE_STRIP 線型連續(xù)填充三角形串

GL_TRIANGLE_FAN 扇形連續(xù)填充三角形串

GL_QUAD_STRIP 連續(xù)填充四邊形串

4注意事項(xiàng)

glBegin()與glEnd()函數(shù)使用注意點(diǎn):

在OpenGL最初的定義中,幾何對(duì)象數(shù)據(jù)的輸入是通過(guò)調(diào)用glBegin()和glEnd()接口對(duì)來(lái)實(shí)現(xiàn)的。glBegin()的參數(shù)表示其下所接收的數(shù)據(jù)是何種類型,如點(diǎn),線段,三角型,扇形三角行,多邊形等等。

而如glTranslatef(), glScalef(), glRotatef()等接口的作用是對(duì)當(dāng)前模型空間進(jìn)行幾何轉(zhuǎn)換。如glTranslatef(1,2,3);表示把模型的世界坐標(biāo)原點(diǎn)從當(dāng)前位置(系統(tǒng)總認(rèn)為是(0,0,0))轉(zhuǎn)到起相對(duì)位置(1,2,3)。注意,OpenGL空間使用的是右手系的定義,與屏幕水平方向一致,并方向向右的是x軸;與屏幕方向垂直方向一致,并方向向上的是y軸;與屏幕屏幕垂直,方向向外的是z軸。

glTranslatef()等此類幾何轉(zhuǎn)換接口在glBegin()和glEnd()之間是無(wú)效的。因此,如果想對(duì)模型的位置進(jìn)行轉(zhuǎn)換,要在調(diào)用glBegin()和glEnd()接口對(duì)之前行處理。這是許多初學(xué)者特別容易犯錯(cuò)的地方,而且這個(gè)錯(cuò)誤不容易找出來(lái)。

例如,以下的代碼,并不會(huì)把模型的位置進(jìn)行轉(zhuǎn)移:

glBegin(GL_TRIANGLES)

glTranslatef(1,2,3);

render model......

glEnd()

而應(yīng)該這樣調(diào)用:

glTranslatef(1,2,3);

glBegin(GL_TRIANGLES)

render model......

glEnd()




文章源自于

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容