不管是我們玩的游戲,看到電影,林林總總的計算機圖形,它們有着大量優美着色的曲線或者表面,在opengl里面,卻都是通過一些基本圖形元素組成的,比如直線,再比如多邊形。
就好比畫畫,畫之前是要做一些准備工作的。至少我們要有一張畫紙,承載我們要畫的圖形。但是計算機跟真實的畫紙是不一樣的。紙是白色的,直接花就好;在計算機世界里,這張畫布是一塊內存,保存着我們之前已經畫上去的圖像,為了重新畫我們需要的東西,我們需要先將之前的圖像都清除。
一般而言,將它清除為我們需要的某種顏色既可。比如是描繪黑夜,那就將清除顏色設置為黑色;繪制藍天就將背景顏色設置為藍色等等。當然如果是要將背景進行被圖形覆蓋的話,背景色清除成什么顏色就無所謂了。
當我說到這里,是不是有人要問,既然可以被圖形覆蓋,那我畫個大矩形框不就可以了。當然,沒有問題,真的。但是(好吧,肯定是要轉折的啦),從效率上將,調用幾個清除函數比畫矩形框要快的多。而且,openGL中,程序員可以任意的改變系統坐標位置,觀察角度,觀察位置等等,如果是這種情況,這個矩形框設多大呢,放在哪里合適呢?還是乖乖清除為某種顏色吧,親,方便呢~
下面來介紹一下清楚函數。先看一個例子[/size][size=large][size=small][/size]
- glClearColor(0.0,0.0,0,0.0);
- glClear(GL_COLOR_BUFFER_BIT)
這兩句代碼是講,將窗口清除為黑色。第一句是設置清除顏色;第二句則是把窗口清除為當前顏色。glClear()只有一個參數,指定需要清除的緩沖區。這個例子里需要清除的只是當前背景顏色,所以,界面上顯示的圖形界面還可以看到,只是背景變為了黑色。
緩沖區類型如下表:
| 緩沖區 名稱 | |
| 顏色緩沖區 GL_COLOR_BUFFER_BIT | |
| 深度緩沖區 GL_DEPTH_BUFFER_BIT | |
| 積累緩沖區 GL_ACCUM_BUFFER_BIT | |
| 模板緩沖區 GL_STENCIL_BUFFER_BIT |
OpenGL允許同時清除多個緩沖區。這就好比撿豆子,多種顏色的豆子,撿的過程中,將它們一一放入不同的盤子和每次只撿一種顏色放入盤子,哪個更快一些?
使用時,緩沖區值是以或的方式進行的。其它三種緩沖區設置值的函數后續用到時再提及,因還未學習透徹,在此先不講述。
講完畫布,我們來看一看計算機中的畫筆。其實也不能算是畫筆,只能說是畫筆的顏色。我們將背景清除為一種顏色,並不代表我們畫出來的那個物什它也需要這種顏色。而且一般而言,物體的顏色是五顏六色的,所以需要有一個函數不停的更替畫筆顏色。
- glColor3f(float red,float green, float blue);
這個函數就是用來設置顏色的,每個參數的取值都在0.0~1.0之間,分別代表紅綠藍。
需要注意的是,如果畫完一個物體,再不指定新的顏色的情況下,下一個物體的顏色會沿用之前設置的顏色,直至重新設置畫筆顏色為止。

