跳至內容

GLUT

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 12:58 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

'GLUT(英文攏寫:OpenGL'UtilityToolkit)是一个處理 OpenGL 程式的工具庫,負責處理佮底層作業系統的呼叫佮 I / O,並包括以下捷看著的功能:

  • 定義猶閣控制視窗
  • 偵測閣處理鍵盤佮趨鼠的事件
  • 以一个函式呼叫繪製某寡常用的立體圖形,比如講長方體、球、佮猶閣伊茶鈷(實心抑是骨架,如 ` glutWireTeapot ( ) `)
  • 提供簡單選單列的實現

GLUT 是由 Mark 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 ( ) `。

實現

上早的啊 GLUT 函式庫是由 Mark Kilgard 所提供的 GLX,會當支援 X Window System,隨後被 Nate Robins 徙栽到矣 Microsoft Windows 上(WGL)。 除了這以外,Mac OS X 亦提供一个 NSGL / Core OpenGL 的介面支援矣其家己產品的架構。

因為 Kilgard's 的 GLUT 函式庫已經無閣予人維護,而且其他的授權也無允准對其他的函式庫的再發佈抑是做出改版。程式設計師開始意識著愛重新製作一个開放原始碼的應用程式介面。就是頭一个開源的 OpenGL API:freeglut,以盡量會當保留原本介面的方式實現,並且添加一寡新的函式來解決原始版本的使用限制。比如講 OpenGLUT,freeglut 的其中一个分支,佮原版增加一寡新的功能比起來,但佇二空空五年五月已經停止其開發。

原始版本的使用限制

原因版本的 GLUT 予程式設計師僫實現某一寡功能,就出現了真濟非官方的擴充 [一],抑若佇咧某寡版本的 API 的實現方式內底嘛攏是濟抑是少解決遮的問題。

以下列出數種原版 GLUT 中常看的問題以及解決方法:

  • 原先的 GLUT 需要使用者呼叫一个袂退回的 ` glutMainLoop ( ) ` 來使相關函式開始運作。這程式設計師予誠歹整合到其他函式中抑是家己選用其他的事件回轉。常見的做法是引進一个名為 ` glutCheckLoop ( ) ` 的函式,這个函式干焦會執行一擺 ` glutMainLoop ( ) ` 的迴箍。另外一个捷看的方法是使用濟个執行緒,並將 ` glutMainLoop ( ) ` 囥佇一个單獨的執行緒中,但是這个做法會引起仝步的問題,並且隨著作業系統會有無仝的實現方式。此外 Mac OS X 的 GLUT 閣較規定 ` glutMainLoop ( ) ` 必須愛以主執行緒執行。
  • 原先的 ` glutMainLoop ( ) ` 會共執行緒搶走,一直到 ` glutMainLoop ( ) ` 家己登出,所以程式設計師無一个方法會當藉呼叫函式來直接結束程式,freeglut 愛藉入來引入來 ` glutLeaveMainLoop ( ) ` 來解決這个問題。
  • 承上,原先的 ` glutMainLoop ( ) ` 視窗予人關起來彼陣就隨結束執行,予程式的設計師袂當定義離開程式的行為,所以真濟 API 並且引入另外一个函式 ` glutWMCloseFunc ( ) ` 會當定義程式執行結束的時需要的動作。

因為原始版本的 GLUT 已經予人開放原始碼的 freeglut 所取代,所以以上的問題佇上原始版本的 GLUT 一直無予人解決。

參見

  • GLU
  • OpenGL User Interface Library(GLUI)
  • freeglut
  • Simple DirectMedia Layer(SDL)
  • GLFW

外部連結

  • GLUT-The OpenGL Utility Toolkit
  • GLUT documentation
  • OpenGLUT
  • FreeGLUT
  • GLUT Tutorial for C / C + +
  • Glut tutorial with many lessons(Very in-depth)for C
  • List of OpenGL functions for Windows ( GL and GLU , not GLUT )
  • GLUT for WIN 三十二(found from ARToolKit readme)
  • GLUT Packages for Dev C + + users
  • GLUT Installation for Dev C + +
  • GLUT Installation for Dev C + +