サイログ。

~雑多な記事置き場~

Ruby1.9.1でopengl-0.32gをビルドする

Ruby1.9.1でRuby/SDLを動かそうと思ったら、やっぱりopengl.soをビルドしなきゃならないというわけで、そのときのメモ。

Rubyで動くOpenGLライブラリはこちらから取得。
http://www2.giganet.net/~yoshi/

opengl.soのビルドの方法はこちらを参照。
http://www.kmc.gr.jp/~ohai/diary/?date=20070305

"ruby extconf.rb"までは良かったが、"make opengl.so"すると、エラーが出るわ出るわ
なんでかと思ったら、配列とかの参照が昔のまんま。つまり、↓のようなコードがたくさん有ったんです。

struct RArray *ary;
 :
ary = RARRAY(arg);
hoge = ary->ptr[0];
for(i=0; i<ary->len; i++){
 :
}

fuga((VALUE)ary,...);

hanya = RSTRING(str)->len;

うーん、こりゃ怒られるわ。
というわけで、上記コードを以下の様に修正することで、opengl.soファイルが出来上がりました。

VALUE ary;
 :
ary = arg; // ホンマは要らないけどね・・・
hoge = RARRAY_PTR(ary)[0];
for(i=0; i<RARRAY_LEN(ary); i++){
 :
}

fuga(ary,...);

hanya = RSTRING_LEN(str);

これで、opengl.soは出来ますが、動作確認はしてないので、自己責任でお願いします・・・。
(もし修正方法が間違ってたら報告お願いします)*1

*1:さっき、最新のopenglライブラリのドキュメントを見たら、Ruby1.4世代のやつじゃないですか。そりゃ1.9.1でビルドできひんはずやわ