くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

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

なんかストーリーがありえねぇ。

そろそろ終盤に差しかかってきてると思うんですけど、なにこのストーリー。

ネタバレになるので書きませんが。

こう、もっと、燃えるシチュエーションは無いのですか?

死地を乗り越えて向かう先がアレなんて…。

_ ruby/dl2

お、dl2なんてのが出てたのか。すっかり見落としてたよー。

ドキュメントがほぼ無いのでソースを読むわけですが。

おお、なんかldlに近いよ*1。基本的にldlと同じように出来る限りRubyで書いて最低限の部分だけCになったっぽい。ldlでは全部文字列で渡すようにしてたけど、dl2では全部longで渡すようになっているようだ。

もちろんstdcall対応。

dlとは全然別物になったが、かなり好感触。あとはちゃんと使えれば良いね。

てか、こうなるって分かってたらldlなんて作らなかったよ…。

いつ標準に入るか楽しみだ。

*1  いや、もちろんldlなんかより断然まともですが


ページのトップへ | トップ «前の日記(2005-03-10) 最新 次の日記(2005-03-16)» | 編集 | kumaryu.net by kumaryu