kumaryu日記
2005-03-14 なんかもう勘弁してください
_ MacOSXでruby/sdl
riko(仮)を作ろうと思ったわけですよ。
でね、まず必要なものを揃えるんだ。
ruby/sdl。riko自体には関係無いけど、手軽にOpenGL表示用のウィンドウ出すには要るんだな。ちゃんとSDL自体も入れておく。
glew。OpenGL使うには非常に便利なので入れておく。無いと結構死ねる。
とまあ、こんなもんで済むわけなんだが。
OSXでruby/sdl動かすのは結構大変で、ruby本体にパッチを当てなきゃいけない。まあ、それだけなら以前もやったんで別にいいんだが、今後ruby/sdlをOSXで動かしたい人はそれじゃ面倒だろう。
俺自身もruby1.8.2にしちゃったのでもう一回パッチ当ててビルドは面倒だ。
そこで色々調べる。
まずNSObjectが無いとかなんとかのエラー。ruby自体を-framework Cocoaでリンクしてみる。
これはOK。エラーは出なくなった。
でもこれじゃ同じことなのでRubyCocoaの最新を入れて、require 'osx/cocoa'してみる。
これもOK。これなら少し楽。
で、そのまま進めて、SDL.setVideoModeするといっぱい警告が表示された挙句に例外で落ちる。
ここは
require 'osx/cocoa' OSX::NSApplication.sharedApplication()
こんな感じで逃げる。警告はいまだにいっぱいだ。
と、SDLのサンプルは普通に組んであるように見えるが何でちゃんと動くのか考える…。
あれ?そういえば、SDLのアプリケーションって、mainはSDL_mainにマクロで置き換えられて、SDL_mainに*1本物のmainが入るんじゃなかったっけ?
と思ってSDLのソースを見てみると。まあ、その通りで。
つまりruby/sdlが期待通り動かないのはSDL_main中のmainで初期化してる部分を通らないから。当然動かんね。
さて、どうすればいいんでしょう?
簡単なのはSDLを使う版Rubyを作ること。簡単なのは、って言うかそれしか方法が無い。
で、作ってみました。なんか昔のCマガの記事を参考に。てかまんまパクらせて頂きました。
こいつ→。
これを使ったら綺麗に起動しました。めでたしめでたし。
眠い…。
*1 まぎらわしいな。libSDL_mainな。
_ Wiz XTH
なんかストーリーがありえねぇ。
そろそろ終盤に差しかかってきてると思うんですけど、なにこのストーリー。
ネタバレになるので書きませんが。
こう、もっと、燃えるシチュエーションは無いのですか?
死地を乗り越えて向かう先がアレなんて…。