ruby-opengl のコンパイル
MinGW に glut を組み込む
gl・gluライブラリは、MinGW内にすでにlibopengl32.a, libglu32.a として含まれていますが、glut がありません。
glut のソースは MinGW ではコンパイルできないので、バイナリアーカイブ glut-3.7.6-bin.tar.gz を入手します。
ヘッダとライブラリを手でコピーします。
$ cp -p glut.h /mingw/include/GL $ cp -p glut32.lib /mingw/lib/libglut.a
glut.h のコピー先が include の下の GL であることと、glut32.lib は libglut.a に名前を変えなくてはいけないことに注意。
mkrf の準備
コンパイルに必要な mkrf を、gem でインストール。(なければ)
$ gem install mkrf
mkrf-0.2.3 の場合、パッチを当てます。
http://rubyforge.org/pipermail/ruby-opengl-devel/2009-April/000204.html
から、二つのパッチファイル attachment.obj, attachment-0001.obj を落とします。
(仮に ~/Downloads に落としたとします)
これを gems にある mkrf の、ライブラリファイルに対して適用します。
$ cd /c/ruby1.9/lib/ruby/gems/1.9.1/gems/mkrf-0.2.3/lib/mkrf $ patch < ~/Downloads/attachment.obj $ patch < ~/Downloads/attachment-0001.obj
ruby-opengl のコンパイル
gem でも tarball でも、MinGW ではコンパイルに失敗します。
mkrf と同様にパッチを当てても良いのですが、subversion で最新のソースを checkout すれば手間が省けます。
$ svn checkout http://ruby-opengl.rubyforge.org/svn/trunk $ rake binary_gem $ gem install pkg/ruby-opengl-0.60.1-x86-mingw32-ruby19.gem
ローカル gem を作ってインストールします。
サンプル実行
example の下にRedBook, OrangeBook, NeHe の3つのディレクトリがありますが、一部そのままでは動かないサンプルがあります
RedBook の stroke.rb は、'A'[0] が Ruby1.9 で文字列を返すよう変更されたため動きません。
これもエディタで、108〜113行めの[0]を、「.ord」 に直します。
OrangeBook の brick.rb と particle.rb は、when文の最後にいらない「:」があって文法エラーになるので、エディタで取り除いて実行します。
(これ、C の switch 〜 case とまちがえた?)
サンプルは動きましたか? ……おつかれさまでした……。
整理した書き方でとぼけていますが、かなり地雷踏みました(笑)
Ruby 1.9 + MinGW は地雷原ですなあ。(まだパッチがあるだけいいけど)