くまりゅう日記

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

2010-02-04

_ [Riko] Riko日記

着々と実装を進めて新しいコンテキストオブジェクトを使った描画ができるようになった。

#コンテキストの初期化をするよ(ウィンドウは既にある前提)
@context = Riko::Context.new
Riko::Context.current = @context

#描画するもの準備するよ
prim = Riko::SimplePrimitive.new(:triangles)
prim.color(1.0, 0.0, 0.0, 1.0)
prim.vertex(0.0, 0.3)
prim.color(0.0, 1.0, 0.0, 1.0)
prim.vertex(-0.3, -0.3)
prim.color(0.0, 0.0, 1.0, 1.0)
prim.vertex(0.3, -0.3)

#画面フレームバッファを設定するよ
@context.framebuffer = Riko::DefaultFramebuffer.new(@width, @height)
#画面クリアするよ
@context.framebuffer.clear

#単に描くだけのシェーダを設定するよ
@context.shader      = Riko::FixedShader.new

#primを描画するよ
@context.primitive_render(prim.primitive)
SDL.GLSwapBuffers

#コンテキストとこのコンテキストで作ったリソース
#(フレームバッファ、シェーダ、バッファオブジェクト、プリミティブ)
#を破棄するよ。
@context.dispose

とまあ、とてもシンプルに描画できて満足である。

あとはRenderStateも設定できるようにしないといけないのでそれを作りたいが、ちょっと大変なので今のコードを使いまわせるようにちょっと手を入れよう。

あとシェーダがちゃんと動くか怪しいっつーか動かないだろうからそれをやったりしないと。こっちもちょっと名前が変わったりアセンブリシェーダのクラス構成が変わったりする予定。

少しずつでも動くになるとやる気が出るね。

_ [Ruby] Rubinius、拡張ライブラリとGCの謎

変なタイトルつけたけど前の続きです。

以前、RubiniusはMRIの拡張ライブラリ使える*1っつーけどGCとか大丈夫なのかいと書きましたが、あれから調べました。

結論から言うとGCは大丈夫。気にしなくてよさげです。

Rubiniusは中身がC++なんでCのMRIとはオブジェクトの作りが全く異なっている。それをCの拡張ライブラリに渡すわけにもいかないので一段Handleオブジェクトってのを作ってラップしてる。

そのHandleオブジェクトはVMのHandleオブジェクト領域に保持しておいてGCはHandleオブジェクト領域も走査してくれる。

とかいうことでGCは大丈夫っていうことだ。

そういやMacRuby 0.5が出てた。まだ入れるだけしかやってないけど拡張ライブラリがどうなってるか調べたほうがいいかなぁ。

*1  ビルドは必要ですが


ページのトップへ | トップ «前の日記(2010-02-02) 最新 次の日記(2010-02-08)» | 編集 | kumaryu.net by kumaryu