バグってたGLCanvasパッチを直してついでに簡単なサンプルもくっつけてMLに投げといた。
そしたら1.9.3で入れとくよとのこと。やったー。1.9.2はもう出るから入らなかったのね。
あとwxWidgetsを--with-openglつけると他に何かライブラリ必要? って言われてんだけどどうなんだろ。Windows*1とMacOSXではいらんけど、LinuxなんかではMesaとか必要なのかなぁ? わからんねぇ。
とりあえずここにもパッチとサンプル上げとく。サンプルはruby-openglが必要で、方向キーで箱が回転します。
ああ、cube.rbって名前にして置いたらCGIだと思いやがるのか…。
*1 OpenGL入ってないWindows95なんてもう知らん
描画周り、MultiDrawElementsとかに対応して、使ってなかった簡易ジオメトリインスタンスを消した。だって遅いし使えないんだもん。
パーティクルを組んでたんだけど、遅かったのでC++に移行。
…してみたが、あとで確認したら重かったのは更新処理じゃなくて描画の登録処理だった。
まあ更新処理もC++にした方が速いし、描画登録をC++でやるにしてもRubyのオブジェクトからC++にデータ渡して描画じゃあんまり速くならんもんな。
とりあえず適当に組んで、2000個強くらいなら余裕で出るようになった。Rubyだけだと300も無理だったんだけどねぇ。 もちろんマシンによっても違うし、他の処理やるとそんなに出ないだろうが、しばらく使う分なら数百も出れば十分なので大丈夫だね。
もっと速くするなら多分描画をなんとかしないとならんけど、どうしよう。今はVBOに4頂点ずつデータぶち込んでDrawArraysでQUADSを描画してるけど、QUADSってどうなんだろ? TRIANGLESとインデックス指定で描画した方がいいんだろうか。うーん、なんかRadeonとGeForceで違ってそうな気もしないでもないな…。
試してみりゃいいんだが、インデクス用のバッファ作るのがめんどいな。
あともしかしたらただCPUが重いだけかもしれん。それならめどいので諦めよう。 SSE対応もどれだけ効果あるのか分からんしな。
とりあえずソースが酷いので整理してコミットしなくちゃなぁ。つかパーティクル周りってRikoに入れるものなのか? 分けると描画周りが困るので入れちゃったけどさ。