テレビ,映画,ゲームの世界では頻繁に3Dグラフィクスが使われています. 3Dとは3 dimension,つまり3次元のことですが,画面に表示される画像自体は2次元です.では何が3次元なのでしょうか. それはデータが3次元で管理されているということです.たとえば,2次元グラフィクスの代表,セル画によるアニメーションでは,何千枚ものセル画を用意してペラペラマンガ方式で動きを表現します. 2次元グラフィクスの場合,動きを表現するため,つまり視点を変更する度に,その都度新しく絵を書かなければなりません.そのため製作時間も膨大なものになりますし,人間の感性に頼るところが大きくなります. 3Dグラフィクスは2次元の場合とはまったく別の手法で描かれます.たとえば視点を変更する場合は,コンピュータの計算によって新しく絵を書きます.その計算は元となるデータ(モデリングデータ)を依どころに行われます.モデリングデータは x,y,z の3次元座標で管理されています. 一度モデリングデータさえつくってしまえば,影つけや視点変更,パース変更などはコンピュータの計算にまかせてしまうので,その都度人間が新しく絵を描く必要はありません.しかしこれらの計算をするプログラムをつくるのは容易ではありません.そこで用いられるのが,三次元計算のアルゴリズムをライブラリの形で用意しているOpenGLです. * OpenGL [#o4eceb52] OpenGLはシリコン・グラフフィクス社によって開発された,プログラマがグラフィクスハードウェアにアクセスするプログラムを書けるようにしてくれる,アプリケーションプログラマインターフェース(API)です.簡単に言うと三次元グラフィクス計算を簡単にできるように助けてくれる存在です. OpenGLではデプス・バッファ法(Zバッファ法)という三次元計算アルゴリズムが使われています. ついでにAPIについても説明しておきましょう. APIとは,アプリケーションから,OSが用意する各種機能を利用するための仕組みです.すなわち,プログラムを開発するための関数,コマンド,ユーティリティなどのインタフェースの総称ですね. APIを用いることにより,プログラムの互換性を高めて移植時の工数を削減することができます. OpenGLというAPIを採用することで,WindowsでもMac OSでもLinuxでも,さてはゲーム機までも幅広く対応できるわけです. さらに,OpenGLによるコーディングを助けるため,GLUT,GLUIというライブラリが存在します. ** GLUT [#b5f8520f] OpenGLのほとんどの機能はこのライブラリから利用することができます. ** GLUI [#f4a638af] ボタンなどのウィジェットを作成するためのライブラリです.