next up previous contents index
Next: 1.2 Design Philosophy Up: 1 Introduction Previous:1 Introduction

1.1 Background

OpenGL の仕様 [14,10] における大きな特徴のひとつは,ウィンドウシステムへの依存部分を OpenGL のレンダリング・モデルから分離したことです. その結果,OpenGL はウィンドウシステムとは独立になりました.

描画ウィンドウの生成やウィンドウシステムのイベント・ハンドリングなどの ウィンドウシステムのオペレーションは, ウィンドウシステム自体に定義されるものとして残されています. 例えば OpenGL コンテクストをあるウィンドウに生成したりバインドしたり する,などといった OpenGL とウィンドウシステム間に必要な相互作用は, OpenGL の仕様からは分離して ウィンドウシステム依存の仕様として記述されています. 例えば,GLX の仕様[3]は OpenGL が X Window System とどのようにして相互作用するか, の標準が記載されています.

OpenGL の前身が IRIS GL [15,16] です. OpenGLとは異なり,IRIS GL には描画ウィンドウがどのように生成され操作されるか, が記述されています. IRIS GL のウィンドウ・インタフェースは使用するのが容易であったため, 広く利用されていました. IRIS GL のプログラマーは ウィンドウシステム自体のプログラミングのエキスパートになる必要はなく, グラフィックス・プログラミングだけに集中できました. IRIS GL のウィンドウ・インタフェースはハイレベルだったので, 異なるウィンド・システムを対象とすることも可能であるという実績も示されました. Silicon Graphics は IRIS GL の基本的なウィンドウ・インタフェースに 何ら大きな変更を施すことなく,NeWS から X Window System まで広く移植しました.

ウィンドウシステムのオペレーションを OpenGL からなくしてしまうことは 賢明な決定でした. なぜなら,OpenGL グラフィックス・システムが パワフルではあるが高価なグラフィックス・ワークステーションから ビデオゲーム,対話型テレビジョンのためのセットトップボックス, PC等の大衆向けのグラフィックス・システムまでを含む さまざまなシステムをターゲットとすることが可能となったからです.

残念ながら, OpenGL においてウィンドウシステム・インタフェースをなくしてしまうことは OpenGL の有用性においてギャップを生じています. X Window System の Xlib [6]や Motif [7]のような ネイティブなウィンドウシステム API を学ぶことは, やる気をなくす可能性があります. これらのウィンドウシステム API に慣れている人ですら, OpenGL をそれらのウィンドウシステムにバインドするインタフェースを 理解しなければなりません. OpenGL プログラムがネイティブなウィンドウシステム・インタフェースを用いて 書かれていたなら, OpenGL レンダリング・コードの移植性にも関わらず, プログラム自信がウィンドウシステム依存となってしまうでしょう.

OpenGL の機能のをテストし,ドキュメント化する過程で tkaux ツールキットが開発されました. aux ツールキットは OpenGL Programming Guide[9]の 例に採用されています.
※ 訳注:OpenGL Programming Guide, Second Editionから GLUTが用いられることになりました.
残念ながら,auxには多くの制限があり, その有用さはプログラムを書くためには非常に制限されています. tk ライブラリは aux よりも機能的ではありますが, ad hocなやり方で開発されたため, ポップアップ・メニューやオーバーレイなどのような IRIS GL のプログラムが期待している多くの重要な機能がありません.

GLUT は,OpenGL プログラムのための ウィンドウシステム非依存のプログラミング・インタフェースに対する要求に 応える形で設計されました. インタフェースはシンプルであるように,かつ, 有用な OpenGL プログラムの要求に合うように設計されました. また,IRIS GL, aux tk インタフェースに 慣れているプログラマーにとって GLUT プログラムの開発が容易となるように, これらのインタフェースからの特徴が採り入れられています.


next up previous contents index
Next: 1.2 Design Philosophy Up: 1 Introduction Previous:1 Introduction

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