opengl學習筆記(三)-點和線段的繪製

來源:互聯網
上載者:User

主要參考了:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html裡的內容。

1、點座標的指定

下面的代碼在螢幕上畫出一組孤立的點,點之間沒有任何連線。

void display()

{glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_POINTS);glVertex2f(-0.5,-0.5);   //點P1glVertex2f(-0.5,0.5);    //點P2glVertex2f(0.5,0.5);    //點P3glVertex2f(0.5,-0.5);   //點P4glEnd();glFlush();}

編譯之後運行,如果你的眼神夠好,會發現在視窗中有4個小白點。也就是正方形的4個頂點。1所示。

代碼解釋

名字以glVertex開頭的一系列函數用於指定頂點座標,名字裡的2表示2維即兩個座標(x和y),f表示座標的類型是float。這一系列函數包括:

glVertex2d
glVertex2f
glVertex3f
glVertex3fv
等等。
數字表示參數的個數,字母表示參數的類型,具體含義是

                   s表示16位整數(OpenGL中將這個類型定義為GLshort),
                   i表示32位整數(OpenGL中將這個類型定義為GLint和GLsizei),
                   f表示32位浮點數(OpenGL中將這個類型定義為GLfloat和GLclampf),
                   d表示64位浮點數(OpenGL中將這個類型定義為GLdouble和GLclampd)。
                   v表示傳遞的幾個參數將使用指標的方式,見下面的例子。
這些函數除了參數的類型和個數不同以外,功能是相同的。例如,以下五個程式碼片段的功能是等效的:

glVertex2i(1, 3);                         glVertex2f(1.0f, 3.0f);glVertex3f(1.0f, 3.0f, 0.0f);glVertex4f(1.0f, 3.0f, 0.0f, 1.0f);GLfloat VertexArr3[] = {1.0f, 3.0f, 0.0f};glVertex3fv(VertexArr3);

以後我們將用glVertex*來表示這一系列函數。
注意:OpenGL的很多函數都是採用這樣的形式,一個相同的首碼再加上參數說明標記,這一點會隨著學習的深入而有更多的體會。

對例子中的代碼

glVertex2f(-0.5, 0.5)

;這一句的意思就是給出一個點,其x座標和y座標分別為-0.5和0.5。在本節的例子中,你可以認為座標原點在視窗的中心,x軸向右為正, y軸向上為正。視窗繪圖區的高度度和寬度都是1。

2、線段的繪製

glBegin函數的參數是告訴程式對後面給出的點集進行什麼操作。這個參數的常見取值有:

(1) GL_POINTS:畫出單個的點,點之間沒有任何連線,效果如上面的圖1。

92) GL_LINES:兩個點一組,每組之間一條線段。(對上面的代碼,參數如果是GL_LINES,則畫出兩條線段,分別是P1P2和P3P4。

效果2所示。(紅色文字是我自己加的,以下同)


(3) GL_LINE_STRIP:用給出的點畫出一條連續折線,除最後一個點外。每一個點都是下一段的起點。即畫出三條線段P1P2、P2P3、P3P4,

效果3所示。


(4) GL_LINE_LOOP:用給出的點畫出一個閉合折線。也就是在GL_LINE_STRIP的基礎上再把最後一個點和第一個點連起來。即畫出四條線段P1P2、P2P3、P3P4、P4P1。效果4所示







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.