GLUT是一個處理OpenGL程序的工具庫,全稱為OpenGL Utility Toolkit。它負責處理和底層操作系統的呼叫以及I/O,包括定義和控制視窗、偵測并處理鍵盤和鼠標事件、以及繪制一些常見的立體圖形,如長方體、球和猶他茶壺等。此外,GLUT還提供了簡單選單列的實現。GLUT的兩個主要目的是建立一個跨平臺的庫,以及簡化學習OpenGL的條件。GLUT的函數都以glut作為開頭,例如glutPostRedisplay()。GLUT是由Mark J. Kilgard在Silicon Graphics工作時所寫,他也是《OpenGL Programming for the X Window System》和《The Cg Tutorial: The Definitive Guide to Programmable Real-時間 Graphics》兩本書的作者。GLUT的優點在于它可以讓OpenGL程序在不同的操作系統上運行,而且使用GLUT編寫OpenGL程序通常只需要增加幾行額外的代碼,不需要了解每個不同操作系統處理視窗的API。
軟件介紹
GLUT代表OpenGL應用工具包,英文全稱為OpenGL Utility Toolkit,是一個和窗口系統無關的軟件包,它由Mark Kilgard在SGI時寫的。作為AUX庫的功能更強大的替代品,用于隱藏不同窗口系統API的復雜性。
GLUT是專為構建中小型OpenGL程序。雖然GLUT是適合學習OpenGL和開發簡單的OpenGL應用程序。GLUT并不是一個功能全面的工具包所以大型應用程序需要復雜的用戶界面最好使用本機窗口系統工具包。所以GLUT是簡單的、容易的、小的。
GLUT中有C,C + +(C一樣),Fortran和Ada編程綁定。GLUT的源代碼分布是移植到幾乎所有的OpenGL實現和平臺。目前最新版本為3.7。
功能與實現
GLUT包括了以下常見的功能:
定義以及控制視窗偵測并處理鍵盤及鼠標的事件以一個函數呼叫繪制某些常用的立體圖形,例如長方體、球、以及猶他茶壺(實心或只有骨架,如glutWireTeapot())提供了簡單選單列的實現。
GLUT是由Mark J. Kilgard在Silicon Graphics工作時所寫,此人同時也是OpenGL Programming for the X Window System以及The Cg Tutorial:The Definitive Guide to Programmable Real-時間 Graphics兩書的作者。
GLUT的兩個主要目的是建立一個跨平臺的函式庫(事實上GLUT就是跨平臺的),以及簡化學習OpenGL的條件。透過GLUT編寫OpenGL通常只需要增加幾行額外GLUT的程式碼,而且不需要知道每個不同操作系統處理視窗的API。
所有的GLUT函數都以glut作為開頭,例如glutPostRedisplay()。
實現
最早的GLUT函式庫是由Mark Kilgard所提供的GLX,能夠支援X Window System,隨后被Nate Robins移植到了Microsoft Windows上(WGL)。除此之外,Mac OS X亦提供了一個NSGL/CGL的界面支援了其自身產品的架構。
由于Kilgard's的GLUT函式庫已經不再被維護,且其授權亦不允許對其函式庫的再發布或是做出改版。程序員開始意識到必須重新制作一個開放源代碼的應用程序界面。于是第一個開源的OpenGL API:freeglut,以盡可能地保留原本界面的方式實現,并添加一些新的函數以解決原始版本的使用限制。例如OpenGLUT,freeglut的其中一個分支,相較于原版本增加了一些新的功能,但在2005年5月已停止其開發。
原始版本的使用限制?
原始版本的GLUT讓程序員難以實現某些功能,于是出現了許多非官方的擴充,而在某些版本的API的實現方式中也都或多或少解決了這些問題。
以下列出數種原版GLUT中常見的問題以及解決方法:
由于原始版本的GLUT已經被開放源代碼的freeglut所取代,所以以上的問題在最原始版本的GLUT一直沒有被解決。
參考資料 >