1. 程式人生 > >Opengl學習筆記1 -- 做一個透視立方體

Opengl學習筆記1 -- 做一個透視立方體

截圖如下:

hw2-1

hw2-2

第一個難度較低,第二個任務則包含更多的程式碼學習,所以在這裡將hw2-2中的相關程式碼解釋一遍:

  1. glClearColor(1.0,1.0,1.0,0.0);這四個引數分別的 RGBA,範圍是0.0f到1.0f,這個方法設定了用於清除的顏色是什麼,而 glClear(GL_COLOR_BUFFER_BIT)函式則執行了清除。

  2. gluLookAt(x0,y0,z0,xref,yref,zref,Vx,Vy,Vz); 這個函式設定攝像機的位置,角度等屬性。引數中 前3個為 攝像機座標系的原點,中間3個是 攝像機的視點,而最後的則是 攝像機的向上向量(就是規定攝像機哪裡是向上的,也就是攝像機角度

    );

  3. glMatrixMode() 函式的引數,這個函式其實就是對接下來要做什麼進行一下宣告,也就是在要做下一步之前告訴計算機我要對“什麼”進行操作了,這個“什麼”在glMatrixMode的“()”裡的選項(引數)有3種模式: GL_PROJECTION 投影, GL_MODELVIEW 模型檢視, GL_TEXTURE 紋理.

  4. 這個函式表示模型在各軸上是如果進行縮放的。舉個例子:glScalef (1.0, 2.0, 1.0);//表示y座標值擴大兩倍,這樣原本方的物體就變成長的了。 注意是 針對模型的

  5. glRotatef(45.0, 0.0, 1.0, 1.0); 旋轉變換同上理,第一個引數是旋轉角度,後面三個引數則代表一個向量

  6. glFrustum(... )是opengl類庫中的函式,它是將當前矩陣與一個透視矩陣相乘,把當前矩陣轉變成透視矩陣,在使用它之前,通常會先呼叫glMatrixMode(GL_PROJECTION).
    即是該函式構造了一個視景體用來將模型進行投影,來裁剪模型,決定模型哪些在視景體裡面,哪些在視景體的外面,在視景體之外的就不可見。

  7. glLoadIdentity(),恢復初始座標系

  8. glutSolidCube (1.0); 建立單位立方體,1表示一個單位的

  9. glutWireCube (1.0); 建立立方體邊線,1表示一個單位的

  10. glFlush()就是強制重新整理

  11. glutDisplayFunc (displayFcn);

    註冊一個繪圖函式

  12. glutReshapeFunc() 當改變視窗大小的時候的回撥函式

總結:

在瞭解了程式碼之後發現繪圖的過程其實和 canvas 一類的還是有相似之處的,而且可以明顯感覺到並不是面向物件而是面向過程的。