簡介
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-Time Graphics兩書的作者。
GLUT的兩個主要目的是建立一個
跨平台的函式庫(事實上GLUT就是跨平台的),以及簡化學習OpenGL的條件。透過GLUT編寫OpenGL通常只需要增加幾行額外GLUT的程式碼,而且不需要知道每個不同作業系統處理視窗的API。
所有的GLUT函式都以glut作為開頭,例如glutPostRedisplay()。
實現
由於Kilgard's的GLUT函式庫已經不再被維護,且其授權亦不允許對其函式庫的再發布或是做出改版。程式設計師開始意識到必須重新製作一個
開放原始碼的
應用程式界面。於是第一個開源的OpenGL API:
freeglut,以儘可能地保留原本界面的方式實現,並添加一些新的函式以解決原始版本的使用限制。例如OpenGLUT,
freeglut的其中一個分支,相較於原版本增加了一些新的功能,但在2005年5月已停止其開發。
原始版本的使用限制
原始版本的GLUT讓程式設計師難以實現某些功能,於是出現了許多非官方的擴充[1],而在某些版本的API的實現方式中也都或多或少解決了這些問題。
以下列出數種原版GLUT中常見的問題以及解決方法: