[ C++で開発 ]

Windows上でOpenGL

プラットフォーム非依存な3次元グラフィックス・ライブラリであるOpenGLをWindows OS上で使用します。コンパイラはVC++を中心に書いていますが、余力があれば他のコンパイラについても触れます。

必要なもの

WindowsでOpenGLプログラムを作成する際に、OpenGL APIを使って生成したグラフィックスを表示するウィンドウをどうコーディングするか、についていくつか選択肢があります。

No. API 名 汎用度
1 GLaux 汎用
2 GLUT 汎用
3 WGL Windows固有
  1. GLaux
  2. GLUT
  3. WGL

Windows Platform SDKに含まれるOpenGL開発キットには、GLauxが含まれています。少し古いOpenGLでは、このGLauxを使うことが多かったようです。最近では、GLauxの替わりにGLUTを使用することがあります。

GLUT

Windows OSでは、OpenGLライブラリが標準で含まれています。そこで、Windows Platform SDKをインストールすれば、OpenGL開発環境が含まれています。しかし、GLUTは含まれていません。GLUTより少し古い(?)GLauxならば含まれています。世の中のOpenGLの多くのサンプルがGLUTを利用しているので、それをGLauxに移植する必要があり、ソースコードをそれなりに修正しなくてはなりません。ということで、GLUTを用意します。

なお、世の中にはGLUTのC++版GLUIというのもあるようです。

GLUTの入手

GLUTのWin32移植版が公開されています。

http://www.xmission.com/~nate/glut.html

GLUTのインストール

以下の3つのファイルをコピーします。

ファイル名 インストール先
glut32.dll
%WinDir%\System32
glut32.lib
<Windows Platform SDKインストール先>\Lib
glut.h
<Windows Platform SDKインストール先>\include\gl

GLUT技術資料

コンパイラとWindows SDK

今回は、Visual C++ Toolkit 2003を使用します。また、Windows Platform SDKを使用します。これらの設定については、Visual C++ Toolkit 2003メモのページを参照下さい。

はじめのOpenGLプログラム

GLUTを使った簡単なアプリケーション

ヘッダファイルのインクルードについて

glut.hだけインクルードすれば、必要なヘッダファイルのインクルードとリンク設定まで行われます。ちょっとトリッキーな気もしますが・・・。

コンパイル・リンク

glut.hのおかげで、OpenGL各ライブラリのリンク指定をコマンドライン(やMakefile)で明示的に指定しなくてもよいようになっています。

E:\ex>cl glut_window_ex1.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

glut_window_ex1.c
Microsoft (R) Incremental Linker Version 7.10.3052
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:glut_window_ex1.exe
glut_window_ex1.obj

E:\ex>

WGLを使ったアプリケーション

コンパイル・リンク

E:\ex>cl /c wgl_window_ex1.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

wgl_window_ex1.c

E:\ex>link /out:wgl_window_ex1.exe wgl_window_ex1.obj user32.lib kernel32.lib
 opengl32.lib
Microsoft (R) Incremental Linker Version 7.10.3052
Copyright (C) Microsoft Corporation.  All rights reserved.

E:\ex>

OpenGLを学ぶ

書籍

Webサイト

OpenGL FAQ J (日本語)

http://www.gimlay.org/~andoh/opengl/faq/openglfaq.html

OpenGL入門 by 赤坂玲音さん

GLUTを使ったプラットフォーム非依存な解説です。

http://black.sakura.ne.jp/~third/system/opengl/gl.html

GLUTによる「手抜き」OpenGL入門 by 床井浩平さん

和歌山大学システム工学部デザイン情報学科。学生実験テーマ「VR実験」参考資料のGLUTを用いたOpenGLチュートリアル。

http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html

OpenGL入門 -MesaGLとGLUTによる3次元グラフィックスへの第一歩 by 舟橋健司さん

情報処理教育センター。Linux(MesaGL)上でGLUTを使用したOpenGLプログラミングの第一歩。

http://www.edsys.center.nitech.ac.jp/manual/ogl/

OpenGL Programming by sunsun@Picture&Softwareさん

Win32 API/VisualBasic/MFC上でのOpenGL、MaxOS X上でのOpenGLなどの紹介もある。

http://www.geocities.jp/yuichiy2001/gl/index.htm

その他

株式会社エクサ OpenGL教育コースのテキスト

同社のOpenGL教育コースで使用している「OpenGLプログラミングテキスト」および例題プログラムのコードを無償で公開しています。以下Webページから入手可能です。

http://www.exa-corp.co.jp/solution/VISUAL/OpenGL/index.shtml