next up previous contents index
Next: 1.3 API Version 2 Up: 1 Introduction Previous:1.1 Background

1.2 Design Philosophy

GLUT は OpenGL レンダリングを用いたプログラムのインプリメンテーションを 容易にします.GLUT API(アプリケーション・プログラミング・インタフェース)は OpenGL を用いて描画したグラフィックス・シーンを表示するのに, わずかなルーチンしか必要としません. GLUT API は(OpenGL APIのように)ステート型です. ほとんどの初期 GLUT ステートが定義されており, 初期ステートはシンプルなプログラムにとってリーズナブルになっています.

さらに,GLUT ルーチンは比較的わずかなパラメータ(引数)でコールでき, ポインタを返さないようになっています. GLUT に渡されるポインタは, 文字列へのポインタ(GLUT に渡される全ての文字列はコピーされ,参照されません) と,不透明な(opaque)フォント・ハンドルへのポインタのみです.

GLUT API は(できうる限り)ウィンドウシステム非依存となっています. このため,GLUT は,ネイティブなウィンドウシステムのハンドル,ポインタ, あるいはその他のデータ構造を 返しません. ウィンドウシステム依存のフォントを用いたりするなどの, より微妙なウィンドウシステムへの依存性は GLUT では避けました. 代わりに,GLUT は独自の(限られたものではありますが)フォントセットを 提供しています.

プログラミングを容易にするために, GLUT はシンプルなメニュー用のサブAPIを用意しています. メニューのサポートはポップアップ・メニューとしてインプリメントされるように 設計されていますが, 他の方法(例えば,プルダウン・メニュー)でメニュー機能をサポートできるように ウィンドウシステムに余地を残してあります.

最も重要な2つのGLUTステートは,カレント・ウィンドウカレント・メニューです. ほとんどのウィンドウ・ルーチンとメニュー・ルーチンが カレント・ウィンドウカレント・メニューそれぞれに 影響を及ぼします. ほとんどのコールバックが, そのコールバックに対して責任のある適切なウィンドウやメニューに カレント・ウィンドウカレント・メニューを 暗黙の内にセットします. GLUT は,シングル・ウィンドウやシングル・メニューのプログラムが, どんなウィンドウやメニューの識別子をも追跡し続ける必要がないように 設計されています. このことによって, 非常にシンプルなGLUTプログラムが非常に容易に実現できるのです.

GLUT は,適度に複雑なプログラムがOpenGL レンダリングに焦点を 当てることができるよう,シンプルに設計されています. GLUT はそれ自身のイベント・ループを持っています. このため,GLUT と,それ自身のイベント・ハンドリング構造を持つような 他のAPIとをミックスして使うことは難しいでしょう. しかし,イベント処理ループのビルトインによってプログラムが容易になる, という有利さがあります.

GLUT はフォントや幾何オブジェクトをレンダリングするための ルーチンを含んでいますが, OpenGL ディスプレイリスト・ネームスペースには何ら影響を及ぼしません. このため,GLUT レンダリング・ルーチンは何一つ OpenGL ディスプレイリストを 用いていません. GLUT レンダリング・ルーチンからの出力をディスプレイリストに含めるように コンパイルするのは,GLUT プログラマーの仕事です.

GLUT ルーチンはその機能に応じて,いくつかの sub-API に分られています:

初期化
コマンドライン処理,ウィンドウシステムの初期化, 初期ウィンドウの生成ステートはこれらのルーチンによって制御されます.
イベント処理の開始
このルーチンは GLUT のイベント処理ループに入ります. このルーチンは決して戻ることなく,必要に応じて GLUTコールバックを連続的にコールし続けます.
ウィンドウ・マネジメント
これらのルーチンはウィンドウの生成と制御を扱います.
オーバーレイ・マネジメント
これらのルーチンはウィンドウのオーバーレイの構築と処理を扱います.
メニュー・マネジメント
これらのルーチンはポップアップメニューの生成と制御を扱います.
コールバック登録
これらのルーチンはGLUTイベント処理ループからコールされるコールバックを 登録します.
カラーインデックス・カラーマップ・マネジメント
これらのルーチンはウィンド運カラーインデックス・カラーマップの 扱いを可能にします.
ステートの取得
これらのルーチンは,プログラムからGLUTのステートを取得することを 可能にします.
フォント・レンダリング
これらのルーチンはストローク・フォントとビットマップ・フォントの レンダリングを可能にします.
幾何形状のレンダリング
これらのルーチンは,球,円錐,二十面体,ティーポットなどの 3次元幾何オブジェクトのレンダリングを可能にします.

next up previous contents index
Next: 1.3 API Version 2 Up: 1 Introduction Previous:1.1 Background

Mark Kilgard
Fri Feb 23 08:05:02 PST 1996