OpenGL Utility Toolkit
作者 | Mark J. Kilgard |
---|---|
開発元 | シリコングラフィックス |
最新版 |
3.7
/ 1998年5月7日 |
プログラミング 言語 | C/C++ |
対応OS | Windows, macOS, Linux |
プラットフォーム | クロスプラットフォーム |
種別 | ライブラリ/フレームワーク |
公式サイト |
www |
OpenGL Utility Toolkit (GLUT) とは、リアルタイム3次元コンピュータグラフィックス用APIのひとつであるOpenGLのバージョン1.1[1]に準拠したユーティリティツールキット(ライブラリ)である。GLUTはC言語形式の関数群で構成されている。
シリコングラフィックス (SGI) やマーク・キルガード(Mark J. Kilgard)によって開発された。
Windows、macOS、LinuxなどのUnix系オペレーティングシステム (OS) で使用できる。
概要
OpenGL向けの基本的な拡張ライブラリとしては、同次変換行列の生成などを補助するGLU (OpenGL Utility Library) が存在するが、GLUTはGLUにない下記の機能を持つ。
- OpenGL描画のための複数ウィンドウ
- コールバック形式のイベント処理
- マウスやキーボードなどの基本入力デバイス対応
- アイドリングとタイマー
- シンプルなポップアップメニュー
- ソリッド/ワイヤーフレームの基本図形(球、立方体、円錐、トーラス、およびティーポット)の生成機能
- ビットマップ/ストロークフォント
- その他のウィンドウ管理関数
GLUTは単なるユーティリティにとどまらず、フレームワーク的な機能も併せて持っており、シンプルな構成でありながら初学者にとって面倒なウィンドウウィジェットの生成処理などを自動化してくれるため、OpenGLの補助ライブラリの中でも特に広く使用されており、グラフィックスプログラムのプロトタイピングや入門書などでも用いられている[2]。
OpenGL関数にgl
プレフィックスが付けられているのと同様に、GLU関数にはglu
プレフィックスが、またGLUT関数にはglut
プレフィックスがそれぞれ付けられている。
GLUTはソースコードが公式サイトにて公開されている。パブリックドメインではなく、また無保証だが、ライセンス料を支払うことなく無償で利用できる[3]。
なお、Microsoft DirectX (Direct3D) 用のGLUT風フレームワークライブラリとして、DXUTが存在する[4]。DXUTはC++専用で、GLUTのようなコールバック形式のフレームワークに加えて、ボタンやドロップダウンリストなどのGUI部品もサポートしている。
問題点
GLUTはメインループに突入した後、終了時にウィンドウをクローズする際にメインループから抜け出す手段が用意されておらず、exit関数を使うなどして半強制終了するしかない。 また、マウスホイールなどのサポートがない。 GLUTからフォークし、これらの欠点を改善したFreeGLUTなどの派生ライブラリが開発されている。
なお、GLUTは最終版3.7のリリースが1998年であるが、その後グラフィックスカードの進化とともに廃止されたOpenGL固定機能(OpenGL 3.1以降で廃止)に依存している。そのため、最新のOpenGL機能を利用するときに、OpenGLレンダリングコンテキストの作成処理が隠ぺいされているGLUTでは不都合がある[5]。 レンダリングコンテキストの作成時にプロファイル種別を指定できるGLFWなどの新しい後発ライブラリやツールキットによって、GLUTはとって代わられつつある。
脚注
- ^ GLUT 3.7同梱のREADMEを参照のこと。
- ^ 床井浩平『GLUTによるOpenGL入門―「OpenGL Utility Toolkit」で簡単3Dプログラミング!』工学社〈I・O BOOKS〉、2005年5月。ISBN 4-7775-1134-0。
- ^ GLUT 3.7同梱のNOTICEを参照のこと。
- ^ DXUT プログラミング ガイド
- ^ 床井研究室 - (1) GLFW で OpenGL を使う