NeHe OpenGL第二課 多邊形

2021-09-03 05:59:53 字數 2132 閱讀 7439

第二課:多邊形

你的第乙個多邊形:

在第乙個教程的基礎上,我們新增了乙個三角形和乙個四邊形。也許你認為這很簡單,但你已經邁出了一大步,要知道任何在opengl中繪製的模型都會被分解為這兩種簡單的圖形。

讀完了這一課,你會學到如何在空間放置模型,並且會知道深度快取的概念。

第一課中,我教您如何建立乙個opengl視窗。這一課中,我將教您如何建立三角形和四邊形。我們講使用來建立gl_********s乙個三角形,gl_quads來建立乙個四邊形。

在第一課**的基礎上,我們只需在drawglscene()過程中增加**。下面我重寫整個過程。如果您計畫修改上節課的**,只需用下面的**覆蓋原來的drawglscene()就可以了。

int drawglscene(glvoid) // 此過程中包括所有的繪製**

{glclear(gl_color_buffer_bit | gl_depth_buffer_bit);// 清除螢幕及深度快取

glloadidentity();// 重置當前的模型觀察矩陣

當您呼叫glloadidentity()之後,您實際上將當前點移到了螢幕中心,x座標軸從左至右,y座標軸從下至上,z座標軸從裡至外。opengl螢幕中心的座標值是x和y軸上的0.0f點。中心左面的座標值是負值,右面是正值。移向螢幕頂端是正值,移向螢幕底端是負值。移入螢幕深處是負值,移出螢幕則是正值。

gltranslatef(x, y, z)沿著 x, y 和 z 軸移動。根據前面的次序,下面的**沿著x軸左移1.5個單位,y軸不動(0.0f),最後移入螢幕6.0f個單位。注意在gltranslatef(x, y, z)中當您移動的時候,您並不是相對螢幕中心移動,而是相對與當前所在的螢幕位置。

gltranslatef(-1.5f,0.0f,-6.0f); // 左移 1.5 單位,並移入螢幕 6.0

現在我們已經移到了螢幕的左半部分,並且將檢視推入螢幕背後足夠的距離以便我們可以看見全部的場景-建立三角形。glbegin(gl_********s)的意思是開始繪製三角形,glend() 告訴opengl三角形已經建立好了。通常您會需要畫3個頂點,可以使用gl_********s。在絕大多數的顯示卡上,繪製三角形是相當快速的。如果要畫四個頂點,使用gl_quads的話會更方便。但據我所知,絕大多數的顯示卡都使用三角形來為物件著色。最後,如果您想要畫更多的頂點時,可以使用gl_polygon。

本節的簡單示例中,我們只畫乙個三角形。如果要畫第二個三角形的話,可以在這三點之後,再加三行**(3點)。所有六點**都應包含在glbegin(gl_********s) 和 glend()之間。在他們之間再不會有多餘的點出現,也就是說,(gl_********s) 和 glend()之間的點都是以三點為乙個集合的。這同樣適用於四邊形。如果您知道實在繪製四邊形的話,您必須在第乙個四點之後,再加上四點為乙個集合的點組。另一方面,多邊形可以由任意個頂點,(gl_polygon)不在乎glbegin(gl_********s) 和 glend()之間有多少行**。

glbegin之後的第一行設定了多邊形的第乙個頂點,glvertex 的第乙個引數是x座標,然後依次是y座標和z座標。第乙個點是上頂點,然後是左下頂點和右下頂點。glend()告訴opengl沒有其他點了。這樣將顯示乙個填充的三角形。

glbegin(gl_********s);// 繪製三角形

glvertex3f( 0.0f, 1.0f, 0.0f);// 上頂點

glvertex3f(-1.0f,-1.0f, 0.0f);// 左下

glvertex3f( 1.0f,-1.0f, 0.0f);// 右下

glend();// 三角形繪製結束

在螢幕的左半部分畫完三角形後,我們要移到右半部分來畫正方形。為此要再次使用gltranslate。這次右移,所以x座標值為正值。因為前面左移了1.5個單位,這次要先向右移回螢幕中心(1.5個單位),再向右移動1.5個單位。總共要向右移3.0個單位。 

gltranslatef(3.0f,0.0f,0.0f);// 右移3單位

現在使用gl_quads繪製正方形。與繪製三角形的**相類似,畫四邊形也很簡單。唯一的區別是用gl_quads來替換了gl_********s。並增加了乙個點。我們使用順時針次序來畫正方形-左上-右上-右下-左下。採用順時針繪製的是物件的後表面。這就是說我們所看見的是正方形的背面。逆時針畫出來的正方形才是正面朝著我們的。現在這對您來說並不重要,但以後您必須知道。 

NeHe OpenGL第二課 多邊形

第二課 多邊形 你的第乙個多邊形 在第乙個教程的基礎上,我們新增了乙個三角形和乙個四邊形。也許你認為這很簡單,但你已經邁出了一大步,要知道任何在opengl中繪製的模型都會被分解為這兩種簡單的圖形。讀完了這一課,你會學到如何在空間放置模型,並且會知道深度快取的概念。第一課中,我教您如何建立乙個ope...

第二課 安裝PHP

為什麼要安裝php?php是伺服器端解析程式,一般執行在網路伺服器上。而編寫php語言的程式我們一般是在自己的個人電腦上完成,然後拿到伺服器上除錯。所以,學習php首先要讓我們的個人電腦模擬伺服器執行環境,讓php能象在伺服器上一樣在我們的個人電腦上執行。這就是為什麼要安裝配置php的原因。安裝配置...

csdn之旅 第二課

1.html標題的標籤 1 注意 只能到,在往後就沒有作用了。2 標籤特點 可以區別其他文字,比如可以加粗 效果圖如 笑對生活!笑對生活!笑對生活!笑對生活!改變字型大小 可以自動換行 2.html段落標記 用元素 注意 標籤和標籤之間的關係 可以巢狀使用 但不可以交叉 3.html常用標記 單標記...