首先要感謝xie_zi : http://blog.csdn.net/xie_zi 的翻譯,翻譯十章的量很大,而且因為關於glut國內還沒有多少資料可看,就更顯得這些文章的難得。我本人也在這十篇裡學到了很多東西,在此非常感謝!另外,可能是時間上的原因,原網站上還有一些文章沒有被翻譯過來,有興趣想學習的朋友可以到http://www.lighthouse3d.com/opengl/glut/去看一看,如果有機會,我希望能從xie_zi手裡拿過接力棒繼續翻譯下去。。
GLUT 代表OpenGL Utility Tookit。Mark J.Kilgard 為了使OpenGL應用程式結構能夠真正獨立於視窗系統構思了GLUT庫。感謝GLUT,使我們可以寫程式而不必去學關於X windows或者微軟自己的視窗系統。Kilgard在X windows上應用這個庫,後來Nate Robins把它擴充到微軟的視窗系統。感謝他們,他們做的太棒了。
在這個教程裡,我將給你介紹基本的使用GLUT建立一個應用程式。這個教程將不介紹如何去渲染那些比較精美的視覺情境。這是為了保持代碼儘可能的簡潔。
你需要什麼!
為了能夠使用GLUT寫程式,你應該有最新版本的GLUT庫。(GLUT庫的下載,網上搜一下,很多的。)
http://www.opengl.org/documentation/specs/glut/spec3/spec3.html 這個網站裡有很多GLUT庫裡函數的原型定義。
為了用GLUT寫一個C語言程式你需要有三個檔案:
1:glut.h—這個標頭檔是要包含到你的代碼裡的去的。一般把這個檔案放到、include/gl檔案夾裡。
2:glut.lib和glut32.lib(glut.lib是SGI的,glut32.lib是Microsoft的。好像就是看你用的什麼作業系統了。一般down的這兩個檔案都有)這個檔案必須串連到你的程式。所以必須放在lib檔案夾裡。
3:glut32.dll(windows)和glut.dll(SGI)--這個檔案必須放在system32檔案夾裡。
在VC/VC6.0裡的設定
有Visual C/C++裡建立工程可以有兩個選擇:控制台(console)和Win32。第一個是最常用的,選第一個的話,應用程式將會有兩個視窗,一個控制台視窗(就是命令列那樣的視窗)一個OpenGL視窗。選擇Win32的也有可能用GLUT和windows編程結合建立一個應用程式。所有你必須做的是改變一個設定。
主菜單中選擇“工程”(project)->“設定”(setting)
對話方塊中選擇“串連”(link)標籤。
在“分類”(Category)組合框裡選擇“輸出”(output)
再在“進入點”(Entry-point symbol)文字框裡鍵入“mainCRTStartup”
對一個現有的控制台應用程式,有一個簡單的辦法把它轉換成Win32應用程式,這樣可以擺脫那個命令列視窗。
1:接著上面的添加進入點的那個標籤。
2:在“工程選項”(Project options)文字框裡把“subsystem:console”替換成“subsystem:windows”
你也可以僅僅在你的代碼的開頭添加下面的這一行代碼,而不進行上述設定。
#pragma comment(linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )
現在這個應用程式就沒有控制台視窗,只有OpenGL視窗。為了把GLUT串連到一個程式裡,你還得進行以下幾步。
1:選擇“工程”(project)->“設定”(settings)。
2:選擇“串連”(Link)標籤。
3:增加下面的檔案到“對象/庫模組”(Object/library modules):OpenGL32.lib,glut32.lib,glu32.lib.(一般加一個glut32.lib就可以了,添加多個請用空格間隔開來)。
上面添加了glut32.lib,和opengl32.lib。這兩個都是標準OpenGL的庫,glu是一個API來自標準的OpenGL擴充。
在VS.NET裡使用OpenGL
很多人在使用VS.NET來建立OpenGL應用程式時,都遇到了一個小問題:一個編譯器錯誤。根據我所知道的,好像僅存在與VS 2003和VS2005的編譯器裡。下面是VS2005裡產生的錯誤。
c:/programas/microsoft visual studio 8/vc/include/stdlib.h(406) :
error C2381: 'exit' : redefinition; __declspec(noreturn) differs
c:/opengl/toolkits/includes/gl/glut.h(146) : see declaration of 'exit'
這個問題好像是因為包含檔案時glut.h在stdlib.h的前面。改下順序就可以解決這個問題。
把
#include <GL/glut.h>
#include <stdlib.h>
改成
#include <stdlib.h>
#include <GL/glut.h>
。OK,所有的都設定好了,讓我們開始學習怎麼去寫GLUT程式。如果這裡還有什麼地方不清楚的請告訴我,我會試著改進的,你的反饋很總要。
(這是本人翻譯的第一個網上的英文教程。我的英語水平很不好。所以很多地方沒說明白。還望各位指正。這也是我學習英語的一個過程。謝謝。)
(轉載註:文中所有代碼請寫在C++檔案裡,若用c則可能會出現編譯錯誤)
原文來自http://www.lighthouse3d.com/opengl/glut/。)