opengl入門(ubuntu版)(一)

2021-08-30 17:50:48 字數 1515 閱讀 9774

原帖位址:

我寫的東西大部分是我學習的體會或是工作中遇到問題,所以很多東西可能不是很「精準」,但我盡量做到好理解、好使用。

如果想比較系統學習opengl可以先從一本叫《opengl超級寶典》的書入手,而且我建議對於沒有任何opengl的基礎的人要看這本書的第四版。因為,opengl在發展過程中以opengl2.0為分界,經歷了乙個由固定管線到可程式設計管線的變化,書的第四版還考慮了這個過度性,所以好理解一些,第四版以後乾脆不講固定管線的內容,我覺得不好上手。另外從實用的角度上說,還有很多古老的**是以固定管線為基礎的,對於一些要求不高的場合,固定管線的方式也更方便、簡潔。

另外,如果能弄到英文版的書,我建議讀英文版的,我個人覺得調理更清晰一些。另外,**都是英文寫的,閱讀英文書籍的時候,會積累一些專業性的單詞,對於將來理解他人(尤其是開源專案)**是很有好處的。

首先,ubuntu14.04版本已經預設安裝了opengl的核心庫,如果你的ubuntu沒有,可執行如下命令:

$ sudo apt-get install libgl1-mesa-dev*

這會給出乙個有關ubuntu的gl庫的列表,你可以選擇乙個安裝。我的ubuntu是14.04.1,安裝了libgl1-mesa-dev-lts-utopic。

然後,安裝如下庫:

$ sudo apt-get install build-essiontial

$ sudo apt-get install libglu1-mesa-dev

$ sudo apt-get install freeglut3-dev

其中freeglut3是glut的乙個開源實現(glut本身沒有開源實現,所以有兩個人就自己做了一套叫freeglut),而libglu是libgl庫的進一步封裝,提供一些易用的介面。

可以這樣解釋gl、glu、glut三者的關係,gl是最基本的庫,但提供的函式介面用起來很複雜,可能畫一條線就要呼叫7、8個介面,glu就把一些常用gl的介面呼叫封裝為乙個介面,增加易用性。而glut提供了乙個與平台無關的視窗系統。至於什麼是視窗系統,如果沒有一定的背景知識,也很不好解釋,所以現在無需明白,在後面深入學習了opengl的相關概念之後,就可以很快明白。

配置完相應的環境後,我們可以先跑乙個簡單的例子,測試環境配置是否正確。

#include 

void display(void)

int main(int argc, char *argv)

將以上**儲存為test.c檔案,然後執行如下編譯命令:

$ gcc ./test.c -lgl -lglu -lglut

編譯成功後會生成乙個a.out檔案,執行這個檔案會得到如下結果。

可以看出我們成功繪製了乙個白色的正方形。

opengl入門(ubuntu版)(二)

在正式介紹opengl函式前先說一些基礎知識。在使用opengl之前,我們要明白乙個什麼是視窗,什麼是視口。這裡給乙個不太準確的定義,視窗的大小表示全部可以用來畫圖的範圍,而視口的大小表示當前允許你畫圖的範圍。下面是乙個小例子,雖然還沒有說明opengl具體函式的使用,這裡也先看乙個簡單的例子,說明...

OpenGL入門學習

include 太陽 地球和月亮 假設每個月都是30天 一年12個月,共是360天 static int day 200 day的變化 從0到359 void mydisplay void void myidle void int main int argc,char argv 3 關於垂直同步co...

OPENGL入門函式

glloadidentity 重置當前的模型觀察矩陣呼叫,glloadidentity 之後,您實際上將當前點移到了螢幕中心。gltranslatef x,y,z 沿著 x,y 和 z 軸移動。gltranslatef 1.5f,0.0f,6.0f 沿著x軸左移1.5個單位,y軸不動 0.0f 最後...