OpenGL関係(VB2005)


0.準備

OpenGLとはSilicon Graphics社(シリコングラフィックス社、SGI)が開発した
グラフィック機能を提供するライブラリ(のプログラムインターフェース)です。
同様のものとしてはDirectX(Direct3D/DirectGraphics)がありますが、
私の中での両者の違いは下記のように感じています。(あくまでも個人的感想)

 DirectX
 ・最高のパフォーマンスが出せる。(HW機能を目一杯使える)
 ・最新カードの機能に素早く対応する。
 ・バージョンアップが多く、かつ、旧仕様を簡単に捨てる
  (新しい機能を使おうとすると、全体を作り直しするはめになったりする
 ・出来る事が多いが、しなければならない事も多い。(面倒)
 ・マニュアルはしっかりとある。
 ・ゲーム用。かつ、Windows専用(最近はXBOXも含むか)。

 OpenGL
 ・そこそこのパフォーマンスが得られる。(用途によもるが大抵の場合OpenGLで事足りる)
 ・出来ることが少ない。(複雑な事をしようとするとかなり面倒なことをしないといけない)
 ・単純な描画なら非常に簡単にできる。
 ・バージョンアップがほとんどなく、かつ、ソースレベルでの互換性に優れている。
 ・VBでの情報が少ない。(VB用以外なら実は多い)
 ・CADやモデリングツールなどのアプリ用。
 ・WindowsでもLinuxでも同一ソースで実行できるものが作れる。


OpenGLのDLLはWindows(NT3.5/95以降)に含まれているので特に準備することなく使用できます。
ただしOpenGLは色々な環境で動作できるよう「Windowsのウィンドウ」とか「画面モード」とか
そういうプラットフォームに依存する部分に関する機能は提供しません。
要するにOpenGL本体だけでは画面にグラフィックを表示することができないんです。

多くの場合「OpenGL」という大分類で括られてしまうのですが、実はOpenGLはいくつかのライブラリから構成されています。

ライブラリ名

概要

GL OpenGL本体。狭義のOpenGL。
GLU OpenGL Utility Library。GLの機能を補助する便利な(数学)関数などがある。
AUX 入出力に関する補助(拡張)を行う拡張ライブラリ。
GLUT OpenGL Utility Toolkit。AUX同様の拡張ライブラリ。(AUXの拡張版みたいなもの)
WGL Windows用の拡張ライブラリ。
GLX X Window System用の拡張ライブラリ。
AGL Apple Mac用の拡張ライブラリ。

GL/GLUは環境に依存しない純粋なグラフィックライブラリと言えます。
三角形を描くとか行列計算をするといった機能は提供しますが、
どのウィンドウに表示するとか、画面モードはどうするといった機能はないんです。。
そういった物理的というか環境によって異なる部分を提供するのがAUX/GLUT/WGL/GLX/AGLになります。
またAUX/GLUTはWindowsでもUnixで同じやり方で出来るようにしようというもので、
WGL/GLX/AGLはそれぞれのプラットフォーム専用のライブラリになります。

Windows上でOpenGLを使って画面にグラフィックを表示するには、
 (1) GL(+GLU)+GLUT
 (2) GL(+GLU)+AUX
 (3) GL(+GLU)+WGL
のいずれか(或いは複数の組み合わせも可)で使うことになるのですが、
AUXは古くて機能が足りない(そもそも学習用で実践むきではない)、
WGLはWindowsだけしかダメ、といった理由から(1)のやり方がよく使われます。
(GLUTはキーやマウスなどの入力機能なども提供してくれます。
 通常unixとWindowsではそういう部分が異なりますが、GLUTを使うことで同じやり方=同じソースでunix用とWindows用を書ける訳です。)

注意して欲しいのは、上記のライブラリの内GL/GLU/AUX/WGLはWindowsに入ってますが
GLUTは含まれていないということです。別途インストールする必要があります。
下記あたりで入手できます。
  http://www.xmission.com/~nate/glut.html
glut-3.7.6-bin.zipをダウンロードし、パスの通った箇所に展開しましょう。
(SYSTEM32フォルダあたりに突っ込むのが一番楽かも。実行ファイルと同じフォルダに入れても大丈夫かもしれません)

もちろんGLUTを使用しないならば、インストールする必要はありません。
確かにGLUTは移植性に優れてますが、VB2005で作ったものをWindows以外の環境で実行させたり
多言語に移植しようとするなら拡張ライブラリは見直すべきでしょう。(^^;

っていうか一応GLUTもこのページで扱ってますが、私自身はVB2005から使おうと思いません
プログラム構造に関する考え方がWindowsアプリとは合わないように感じます(^^;;;


上に戻る