對opengl有一點了解之後,現在開始真正編寫代碼。
今天的内容:
使用freeglut建立opengl的上下文環境
初始化glew
建立一個opengl的的模闆範例
第一步:
一個opengl的上下文可以允許我們傳遞指令到底層硬體,是以需要一個上下文環境。首先需要配置一個功能視窗,建立一個名為chapter1.c的檔案,在你的編輯器或者內建開發環境中打開它,插入如下代碼:
編譯運作之,将會得到如下視窗:

解釋:
window_title_prefix 定義視窗名字
currentwidth、currentheight 視窗的尺寸
windowhandle freeglut建立的視窗處理句柄
初始化:
聲明函數原形并定義main應用程式入口函數,在initialize函數中調用initwindow函數。initwindow調用幾個freeglut函數建立一個視窗,以glutinit函數開始,其作用是初始化freeglut類庫。其參數是main傳入的兩個參數,你也可以不使用任何參數。
上下文類型和視窗選項:
glutinitcontextversion
glutinitcontextflags
glutinitcontextfrofile
glutsetoption 其參數glut_action_on_window_close是確定glutmainloop函數在main結束時将其清除。
glutinitwindowsize 初始化視窗的尺寸
顯示模式:
glutinitdisplaymode 定義opengl上下文類型,裝置應該如何渲染場景,選擇有:
glut_depath 啟動depth buffer,也叫z-buffer,根據它來決定像素螢幕上的渲染順序
glut_double 啟動 double-buffer,也就是開啟前後端顯示緩存,主要是減少圖檔的閃爍
glut_rgba 定義色彩的混合模式,即rgba混合模式
建立視窗:
glutcreatewindow 建立我們的上下文環境并傳回新建立的視窗處理句柄。其參數window_title_prefix即視窗的名稱
函數回調:
glutreshapefunction 處理視窗尺寸
glutdisplayfunction 渲染場景
調試輸出:
glgetstring 擷取opengl的版本
fprintf c函數,列印字元
如下:
螢幕重新整理顔色:
glclearcolor 其參數對應的是freeglut的glut_rgba設定模式,值範圍0~1.0f對應1~100%色彩強度。
下面是rgba的混合直覺效果圖:
例子:
<code>glclearcolor(1.0f, 0.0f, 0.0f, 0.0f);</code> for red
<code>glclearcolor(0.0f, 1.0f, 0.0f, 0.0f);</code> for green
<code>glclearcolor(0.0f, 0.0f, 1.0f, 0.0f);</code> for blue
<code>glclearcolor(1.0f, 0.0f, 1.0f, 0.0f);</code> for purple
<code>glclearcolor(0.0f, 0.0f, 0.5f, 0.0f);</code> for dark blue
最後的參數是透明度。
主循環:
glutmainloop 隻要視窗處于活動狀态,就會不斷執行這個函數,知道視窗退出。
重置渲染尺寸:
resizefunction 其currentwith和currentheight視窗尺寸
glviewpoirt
參數為x-coordinate,y-coordinate,width,height即渲染的規格尺寸
渲染:
renderfunction 繪制對象
glclear 即第一次往後端緩存中填充的顔色,之後在上面繪制其他對象
glutswapbuffer 交換前後端顯示緩存資料
調用玩glutswapbuffers之後:
添加glew: