GLUT教程 (一) 簡介

來源:互聯網
上載者:User
 首先要感謝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/。)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.