1. 程式人生 > >t0.1OpenGL繪圖入門

t0.1OpenGL繪圖入門

OpenGL庫

     像許多學科一樣,通過練習可以很快地掌握計算機圖形學,練習利用OpenGL編寫和測試生成各種不同圖形的程式。 選擇OpenGL,是因為其跨平臺特性。首先介紹四種主要的OpenGL庫

1、基本GL庫:OpenGL庫的基礎。它提供了OpenGL的基本函式。每個OpenGL函式都是以字元GL開頭。

2、GLUT庫:GL實用工具包(the GL Utility Tookit),主要用來開啟視窗,開發和管理選單,以及管理事件。

3、GLU庫:GL實用庫(the GL Utility Library),提供高階例程,處理矩陣操作和繪製二次曲面如球和圓柱體。也提供將非凸和非簡單多邊形分解成簡單形狀(如三角形)的實用函式(基本的OpenGL處理不好這些操作)

4、GLUI庫:使用者介面庫(the User Interface Library),只要使用GLUT,GLUI就將適當地執行。GLUI為OpenGL程式提供了良好的控制工具和選單。

GLUT事件型別

主要有五種基本事件型別,每種都可以使用GLUT函式註冊。

1、glutDisplayFunc(myDisplay):無論系統何時決定重畫 一個螢幕視窗,它都會發出一個重新繪製事件。出現下列情況之一就會發生該事件:第一次開啟視窗,或覆蓋它的視窗被移走而露出該視窗。函式myDisplay()在這裡被註冊為重新繪製事件的回撥函式。

2、glutReshapeFunc(myReshape):使用者可以對螢幕視窗的形狀進行調整,通常是用滑鼠將視窗的一個角拉伸到一個新位置(只移動視窗並不產生該事件)。函式myReshape()在這裡被註冊為改變視窗形狀的事件。

3、glutMouseFunc(myMouse):當按下或釋放某個按鈕時,就發生了滑鼠事件。函式myMouse()在這裡被註冊為滑鼠事件發生時所呼叫的函式。

4、glutMotionFunc(myMotionFunc):當按下一個或幾個滑鼠按鈕並且滑鼠移動時,一個滑鼠運動事件產生了。

5、gultKeyboardFunc(myKeyboard):這個函式用按下或釋放鍵盤上按鍵的事件來註冊函式myKeyBoard()。

上圖中最後一個函式是glutMainLoop()。當執行這個函式時,程式繪製完初始圖形,並進入迴圈,一直等待事件發生。

GLUT程式設計基本流程

畫圖的第一個任務是開啟一個用於畫圖的螢幕視窗。下圖,顯示瞭如何用GLUT開啟一個視窗,並對函式進行介紹。