OpenGL是流行多年的繪圖函數庫,雖然說在Windows平台中,目前以微軟的DX為最大宗,但是OpenGL擁有跨平台的特性,可以在多個平台繪圖GUI、遊戲、動畫,因此這是一個蠻實用的繪圖庫。
OpenGL並非是所有的人都應該學,因為他為最低層的函數庫,通常我們所使用的各種程式都已經把OpenGL包裝成更容易取用的函數跟方法了,所以可以使用繪圖引擎等強大功能的繪圖軟體,已很有效率的方式來解決問題。但是學習OpenGL可以學習到許多基本的概念,而且寫出來的東西比較可以隨自己的意思來顯示,因此,假如有興趣就看OpenGL Guide來學吧 :)
OpenGL Programming Guide網址〈英文〉:(也有出書,但是匹貴〉
http://www.glprogramming.com/red/index.html
OpenGL需要一個視窗來乘載,在這邊使用GLFW來當作負載,IDE使用CodeBlocks 10.05 ,這邊編譯器採用TDM GCC,而不使用其安裝程式內建的那個。這是因為,這內建的編譯器有點舊,而且有BUG,之前都有遇到莫名其妙的問題,換個編譯器才解決。
1. 下載 CodeBlocks from http://www.codeblocks.org/downloads/26
2. 下載 GLFW from http://www.glfw.org/download.html (筆者下載64bit版)
3. 下載 TDM-GCC from http://tdm-gcc.tdragon.net/download (依自己喜好,安裝編譯器 注意!!安裝不同的編譯器,LINKER可能需要參數設定並不相同)(筆者下載64bit版)
4. 安裝 CodeBlocks 、 TDM-GCC編譯器 (檔案請放在全英文目錄,不確定是否能正常執行於中文目錄底下,請保有良好習慣,英文語系國家對其餘語系有好度不高)
5. 解壓縮 GLFW 於 自定義目錄下 ( IDE等候設定路徑之後即可使用,並不用跟IDE或編譯器放在一起 )
6.開啟 CodeBlocks 10.05
由於他找不到GCC編譯器,因此這邊按ok就好。 ( 有些人電腦可以已經有編譯器了,請依個人環境來調整 )
另外,筆者在這邊說明一下,既然接觸程式界,那麼就應該有看懂遇到的英文的能力,因為許多library都是用英文所以寫的,有些函數庫太簡單使用,就不會有中文手冊可以看( 其實筆者原本也想把GLFW的手冊翻成中文,後來發現那太沒有效率了,因為裡面用的字都很好懂,函數也很輕鬆上手,所以就作罷不翻 )。不然就是太冷門、太新也只有英文看,所以英文要多練練阿...
7. 設定 GLFW函數庫路徑與參數
Settings -> Compiler and debugger -> Linker settings -> Add -> ( 選擇 GLFW 目錄 lib-mingw 資料夾下的 兩個檔案 libglfw.a libglfwll.a ) -> OK
右邊 Other linker options打入 GLFW官網寫的所需要參數 -lglfw -lopengl32 ( 參數跟參數之間必須用空格隔開)
( 注意!! 假如這邊使用的是非筆者使用的編譯器 那其所需要參數 請至 http://www.glfw.org/release-2.7.7.html 查詢 )
8.設定編譯器路徑
Settings -> Compiler and debugger -> Toolchain executables
於底下設定各Tools之路徑
9.設定 GLFW directories
Settings -> Compiler and debugger -> Search directories -> Compiler -> Add -> ( 選擇 GLFW 目錄下 include 資料夾 ) -> OK
Settings -> Compiler and debugger -> Search directories -> Linker -> Add -> ( 選擇 GLFW 目錄下 lib-WIN64 資料夾 ) -> OK
10. 環境建構完成
在這個時候就可以試著執行 Hello World! 之類的程式 來測試是否正常 異常排除請靠自己了-.-
簡單C程式測試碼:
#include <stdio.h> #include <stdlib.h> int main(void) { printf("shit"); } |
結果:
不解釋了...
簡單GLFW呼叫視窗程式碼:(旁邊有些被強制換行了 記得FIX)
#include <stdio.h> int main(void) |
結果:
抄OpenGL Guide第一章範例+GLFW視窗程式碼: ( 隨便打的 goto指令請少用 非必要千萬不要用 不然很容易花掉 不容易Debug )
#include <stdio.h> void display(void) void init (void)
|
結果:
請勿任意轉貼,打字P圖很累,要轉貼請寫出處 ( 這頁的網址 XD ) , 希望大家都能遵守,因為P浮水印也很累==|||