MacでOpenGLのプログラムを始める方法を紹介します。
OpenGLは2D, 3Dのグラフィックスの描画に特化したライブラリで、
C言語などから利用できます。
Macには最初からインストールされているので、
わざわざOpenGLとそれを動かすためのGLUTを
自分でインストールする必要はありません。(少なくとも10.5は。)
環境:
Mac OS X Lepard 10.5.6
1.8GHz Intel Core 2 Duo
MacBook Air
1.Xcodeを起動する。
2.新規プロジェクトをつくる
3.StandardToolを選択し、作成
Command Line Utilityの中のStandard Utilityを選択。
(プログラムをC言語で行いたいときはこれを選ぶけれど、
他の言語でやりたいときはこれじゃないんだと思う)
プロジェクト名は適当につけてください。
場所は例えば「~/Desktop/hogehoge」とすると
デスクトップ上のhogehogeというフォルダに保存されます。
4.既存のフレームワークを追加:OpenGLとGLUT
パネルが出てくるので、ギヤのマークのプルダウンをクリックして、
「追加 > 既存のフレームワーク...」をクリック。
フレームワークの中からGLUTとOpenGLを選択。(2回追加を行う)
追加されると次のようになる。
5.main.cにOpenGLとGLUTのヘッダを付け加える
OpenGLとGLUTのヘッダは
#include <OpenGL/gl.h>
#include <GLUT/glut.h>
となる。ここはWindowsと異なるので注意。
ヘッダを付け加えるのは別にmain.cじゃなくてもいいと思うけど、
(例えばmain.hというファイルを作ってそこに書く)
僕はC言語は詳しくないのでこうしています。
これで少なくともコンパイルはできるはずです。
6.コンパイルしてみる
Xcodeのコンソールを表示して(実行 > コンソール)、
「ビルドして実行」を押してみましょう。
コンソールに「Hello, World!」と表示されるはずです。
これでうまくコンパイルされるなら、
main.cの中で自由にGLUTとOpenGLのライブラリが使えるはずです。
OpenGLのプログラミングに関しては、
例えば以下のページを参考にしてみてください。
補足
OpenGLは当然ながらXcodeを使わなくてもできます。
例えばテキストエディタでC言語のプログラムをするときは、
プログラムの最初に
#include <OpenGL/gl.h>
#include <GLUT/glut.h>
というのを付け加えて、
コンパイルするときに、
cc -framework OpenGL -framework GLUT -framework Foundation program.c
というような引数をいろいろつけてコンパイルすればいい、のだと思うけど、
僕はC言語のプログラムには疎いので、
もしかしたらまちがっているかもしれない。
Xcodeを使うメリットはそう言ったコンパイル時の引数のことを
気にしなくても「フレームワークを追加」という操作で、
それが自動的に実現されることと、
プログラムのエラーを分かりやすく教えてくれるところと、
あとはプログラムが致命的なエラーを内包していても、
被害を小さく収めてくれるなど点があります。
ぼやき
僕はC言語は苦手で嫌いなので、
本当はOpenGLを得意なPerlで扱いたい。
PerlからOpenGLを扱うためのモジュールがあって、
それをPOGLという。
http://graphcomp.com/opengl/
http://search.cpan.org/dist/OpenGL/
これを使いたいのだけど、モジュールのインストールがうまくいかない。
cpan install OpenGL
とやって、CPANからこのモジュールをインストールしようとするのだけど、
コンパイルでこけてしまう。
どなたかわかるかた教えてください。
CPAN.pm: Going to build B/BF/BFREE/OpenGL-0.57.tar.gz
2009-07-18 02:27:55.725 glversion[15023:10b] GLUT Warning: invalid glutGet parameter: 508
Found GLUT - unknown version
Using interface: AGL
Checking if your kit is complete...
Looks good
Writing Makefile for OpenGL
cp OpenGL.pm blib/lib/OpenGL.pm
AutoSplitting blib/lib/OpenGL.pm (blib/lib/auto/OpenGL)
cp Config.pm blib/lib/OpenGL/Config.pm
cp OpenGL.pod blib/lib/OpenGL.pod
/usr/bin/perl /System/Library/Perl/5.8.8/ExtUtils/xsubpp -noprototypes -typemap /System/Library/Perl/5.8.8/ExtUtils/typemap -typemap typemap OpenGL.xs > OpenGL.xsc && mv OpenGL.xsc OpenGL.c
cc -c -Iinclude -I/usr/X11/include -arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3 -DVERSION=\"0.57\" -DXS_VERSION=\"0.57\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" -DHAVE_VER -DHAVE_GL -DHAVE_GLU -DHAVE_GLUT OpenGL.c
cc -c -Iinclude -I/usr/X11/include -arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3 -DVERSION=\"0.57\" -DXS_VERSION=\"0.57\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" -DHAVE_VER -DHAVE_GL -DHAVE_GLU -DHAVE_GLUT gl_util.c
Running Mkbootstrap for OpenGL ()
chmod 644 OpenGL.bs
rm -f blib/arch/auto/OpenGL/OpenGL.bundle
cc -mmacosx-version-min=10.5.6 -arch i386 -arch ppc -bundle -undefined dynamic_lookup -L/usr/local/lib OpenGL.o gl_util.o -framework OpenGL -framework GLUT -o blib/arch/auto/OpenGL/OpenGL.bundle \
\
chmod 755 blib/arch/auto/OpenGL/OpenGL.bundle
cp OpenGL.bs blib/arch/auto/OpenGL/OpenGL.bs
chmod 644 blib/arch/auto/OpenGL/OpenGL.bs
Manifying blib/man3/OpenGL.3pm
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl
Can't load 'blib/arch/auto/OpenGL/OpenGL.bundle' for module OpenGL: dlopen(blib/arch/auto/OpenGL/OpenGL.bundle, 2): Symbol not found: _glutBitmapHeight
Referenced from: /Users/shinichi/.cpan/build/OpenGL-0.57/blib/arch/auto/OpenGL/OpenGL.bundle
Expected in: dynamic lookup
at test.pl line 9
Compilation failed in require at test.pl line 9.
BEGIN failed--compilation aborted at test.pl line 9.
make: *** [test_dynamic] Error 2
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
2009-07-18 02:27:55.725 glversion[15023:10b] GLUT Warning: invalid glutGet parameter: 508
Found GLUT - unknown version
とあるので、おそらくGLUTのヘッダファイルが古いのだと思われる。
が、どうやったらそれを修正できるのか、
わからない。