天天看點

opengl微開發之1-從零開始

對opengl有一點了解之後,現在開始真正編寫代碼。

今天的内容:

        使用freeglut建立opengl的上下文環境

        初始化glew

        建立一個opengl的的模闆範例

第一步:

         一個opengl的上下文可以允許我們傳遞指令到底層硬體,是以需要一個上下文環境。首先需要配置一個功能視窗,建立一個名為chapter1.c的檔案,在你的編輯器或者內建開發環境中打開它,插入如下代碼:

編譯運作之,将會得到如下視窗:

opengl微開發之1-從零開始

解釋:

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函數,列印字元

如下:

opengl微開發之1-從零開始

螢幕重新整理顔色:

      glclearcolor  其參數對應的是freeglut的glut_rgba設定模式,值範圍0~1.0f對應1~100%色彩強度。

      下面是rgba的混合直覺效果圖:

opengl微開發之1-從零開始

   例子:

<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即渲染的規格尺寸

opengl微開發之1-從零開始

渲染:

   renderfunction 繪制對象

   glclear 即第一次往後端緩存中填充的顔色,之後在上面繪制其他對象

   glutswapbuffer 交換前後端顯示緩存資料

opengl微開發之1-從零開始

調用玩glutswapbuffers之後:

opengl微開發之1-從零開始

添加glew:

繼續閱讀