OpenGLを利用してプログラミングするためには,必要なライブラリをインストールしなければなりません. Vine LinuxとWindows XPでの方法を紹介します.
LinuxではXに含まれるglライブラリを利用することができます. Vine Linux 3.xではXOrgに含まれているOpenGLライブラリを使用することができます.
OpenGLライブラリは,apt-getで簡単にインストールすことができます.Vine Linux 3.xの場合,
# apt-get install XOrg-libs XOrg-devel XOrg-gl-devel
とすればインストール完了です.
つぎに,GLUTをインストールします.これもaptで入手可能です.コンパイルには開発用のglut-develも必要になりますので,aptコマンドで
# apt-get install glut glut-devel
とすればインストール完了です.GLUTのライブラリは「/usr/lib」へ,ヘッダは「/usr/include/GL」へそれぞれインストールされます.
ボタンやボックスなどのGUI部品を提供するGLUIを使いたい場合は, GLUIをソースからコンパイルしてインストールします.作者のWebサイト
からglui_v2_2.tgzもらってきて,適当なディレクトリに保存します.そして解凍します.
$ tar zxvf glui_v2_2.tbz
解凍してできたディレクトリに移動して
$ cd glui_v2_2
そこにbinとlibというディレクトリを作成します.
$ mkdir bin $ mkdir lib
そしてmakefileのつぎの部分を編集します. GLUTライブラリ,GLUTヘッダの場所,C++コンパイラを指定し直しています.
GLUT_LIB_LOCATION=/usr/lib ← GLUTライブラリのある場所に GLUT_INC_LOCATION=/usr/include ← GLUTヘッダのある場所に ... #CC=CC -g0 -o32 ← コメントアウト ... CC=g++ -O3 ← コメント解除
GLUTヘッダのある場所が「/usr/include/GL」でなく「usr/include」になるのは, glut.hをインクルードするときにGL/glut.hと書くからです.
makefileを編集したらいよいよコンパイルです.
$ make
コンパイルしているとき,
example1.cpp:89: error: `main' must return `int' make: *** [example1.o] エラー 1
というエラーが出ると思います.これは,サンプルプログラムにて, main文の戻り値がintでないため起きるエラーです.ですので,すべてのサンプルプログラムの戻り値をvoidからintに変えておきます.そしてもう一度makeします.
コンパイルが終わると,「libglui.a」というライブラリが,さきほど作ったlibディレクトリにできあがります. gluiを使ったプログラムをコンパイルできるように,このライブラリと,もとからglui_v2_2.zip含まれている「glui.h」を, GLUTのライブラリ,ヘッダのあるディレクトリにそれぞれコピーします.この作業はrootになって行います.
$ su # cp lib/libglui.a /usr/lib # cp glui.h /usr/include/GL # exit
make時にデモプログラムもコンパイルされます.さきほど作ったbinディレクトリに実行ファイルが5個できています.実行してみましょう.
$ bin/example5
すると下のプログラムが立ち上がります.
このボタンやボックスなどが GLUI によって提供される部品です.このようなGUI部品はウィジェットと呼ばれます.
Vine Linux 2.6ではXFree86に含まれるOpenGLライブラリを利用可能です.ライブラリのある場所が違うため,Vine Linux 3.xとは若干インストール方法が異なります.
apt-getでインストールできます.Vine Linux 2.6の場合,
# apt-get install XFree86-gl XFree86-gl-devel
とします.
aptで入手可能です.
# apt-get install glut glut-devel
GLUTのライブラリは「/usr/X11R6/lib」へ,ヘッダは「/usr/X11R6/include/GL」へそれぞれインストールされます.
Vine Linux 3.xでの場合とほぼ同じです.違うのはmakefileの編集部分です.
GLUT_LIB_LOCATION=/usr/X11R6/lib ← GLUTライブラリのある場所に GLUT_INC_LOCATION=/usr/X11R6/include ← GLUTヘッダのある場所に ... #CC=CC -g0 -o32 ← コメントアウト ... CC=g++ -O3 ← コメント解除
あとは同様にコンパイル,コピーします.
少し前までOpenGLライブラリはXFree86-glに統合されておらず, Mesaという互換ライブラリを使うようになっていたと記憶しています.これもVine Plusにあってapt-getでインストールできますが, XFree86-glと一部のライブラリがかぶっていた気がします(あいまい).
それで,一度Mesaをインストールしていると,うまくXFree86-glがインストールできなくなります.その場合はrpm -eコマンドでMesaをアンインストールするのですが,依存関係があるため--nodepsオプションを付けて無理矢理取り除きます.
# rpm -e --nodeps Mesa Mesa-devel Mesa-common Mesa-common-devel
これでaptからXFree86-glをインストールできるようになると思います.
プログラムをコンパイルするときには,「-lglut」や「-lglui」オプションを加えます. Vine Linux 3.xの環境で,プログラム中にGLUT関数しか使っていない場合は
gcc foo.c -lglut -o foo
だけでコンパイルできると思います.「GLUI」の関数も使っている場合には
gcc foo.c -lglut -lglui -o foo
などとします.
以上のようなオプションをいちいち入力するのは大変ですね.ソースファイルと同じディレクトリに「Makefile」という名前のファイルを作成し,
CC = gcc LOADLIBES = -lglut -lglui foo:
と書き込んで保存しておけば,コマンドラインから
$ make
とするだけでコンパイルできるので便利です.
さらに,最適化(-02),警告をたくさん出す(-Wall),数学関数(-lm)オプションを加えると,
CC = gcc CFLAGS = -O2 -Wall LOADLIBES = -lm -lglut -lglui foo:
というMakefileになります.最後の行を,コンパイルしたいファイル名に置き換えてください.
Visual C++がC:\Program Filesにインストールされている環境での説明をします.Windows用のGLUTは
から手に入ります.ソースファイルとコンパイル済のバイナリファイルが用意されています.バイナリファイルをとってくるのが手っ取り早いでしょう.
をダウンロードします.GLUTのインストールは簡単で, zipファイルを解凍して出てくる
をそれぞれ適切なフォルダへコピーするだけです.
それぞれコピーします.あとはいつも Visual C++ を使うときと同じように GLUT を使って書いたソースを コンパイル,ビルド,実行できます.