PC起動したらログインしたところで固まった…。
シャットダウン時に固まることは前からあったけど、動作中は問題無かったんだけどなぁ。
リセットしたらグラフィックカードのBIOS?で止まってマザボの起動画面まで行かなかった。これはグラフィックカード死んだか。
死んだのがGeForce7600GTで、そろそろ差し替えようかと思ってた奴なんで良かった。まだRadeon1650XTとGeForce8600GTがあるもんね。
7600GTなんて最低限のカードでも、やっぱりファンレスはつらいか。
あー、8600GTにしたらやっぱり結構うるさい。
Google使えないんだがなんとかならんのか…。
使えないって程でもないんだが、言語設定によって検索結果左右されるのがどうしようもない。
言語を日本語にしておくと全ての言語から検索しても日本語の結果が優先されて検索される。英語の公式ページ探したくてわざわざ全ての言語から検索してるってのになんて余計なことしてくれるんだ!
で、英語設定にしちゃうと株価とかいらんもんが表示されるようになって、電車の路線検索みたいな日本用の特殊検索が効かなくなっちゃう。路線検索は良く使うから欲しいんだけど。
うーん、langとlocaleは別に設定できるようにならんかなぁ。
と言って、他の検索エンジンも調べてみたけど、どこも全ての言語で検索しても日本語ページの結果が優先されてる感じ。うーん、そもそも英語と日本語で検索エンジン切り替えるのがいいのかなぁ。
この間投げたGLCanvasのパッチがT_DATAをundefしてから再定義してないのをいまさら気付いたのでトラッカーにコメントを入れといた。
ついでにRubyforgeのアカウントも取ってみた。
何がまずかったかというと、そもそもruby.hでT_DATAをdefineしてるが、Macではシステムのヘッダ中にT_DATAっていうenumを宣言するところがあって、先にruby.hをincludeしちゃうとその宣言でエラー。
ruby.hを最後にincludeすりゃいいのかもしれんけど、swigだとどうやるのか、そもそも出来るのか謎なので、wx/glcanvas.hなんかのT_DATAのenum定義が入るヘッダを呼び出す前でT_DATAをundefしてやった。
しかし、T_DATAの再定義してないからWindowsとかではエラー、MacではT_DATAの中身が違ってやっぱり実行時にエラーということになっちゃうわけよ。
しかしundefしたT_DATAの再定義って難しいんだがどうやればいいんだろう?
即値を書こうとしたが、ruby.hを見ると1.8ではT_DATA=0x22で1.9ではT_DATA=0x12だ。wxRubyが1.9でビルドできるかどうかは知らんが即値はやめといた方が良さそうだ。
かといってT_DATAの値をどっかに取っておいて再定義ってやり方は分からん。あ、いや、分かった。
static const long _T_DATA = T_DATA; #undef T_DATA #include <wx/glcanvas.h> //←ここでenumのT_DATA定義されるかも #define T_DATA _T_DATA
これでいいのか。プリプロセッサだけでやろうとして無理だと思ってたぜ。
まあこの方法に気付かなかったんで逃げた方法は
#define T_DATA (T_FALSE+1)
あんまり良くないけど、1.8でも1.9でもT_FALSEの次だったもんでつい…。
それはともかく、それと前後するようにMLの方で、誰だか知らんけど投げてくれたGLCanvcasのパッチ、まともそうなんで入れようかと思ったんだけどサンプル無いんだよねぇ。つかGLCanvasなんて誰か使うの?標準で入ってて欲しい程要る奴居んの?とか言われてるよ。
はいはーい!俺が使うよ!標準で入ってて欲しいよ!←MLで言え
それに対してwxWidgetsにwxGLCanvasっつーのがあるよ、とかいう勘違いコメントがついて、このパッチはそれを使うパッチだっつーのという突っ込みと共にサンプル作ってくれたらwxRubyの1.9.3で入れるよ、とな。
よーし、サンプル書いちゃうぞー。とか言ってみるテスト。…ん、1.9.3で入れるって言ってるのはサンプルのことか? じゃあ1.9.2でGLCanvas入るの? まあ、どちらにしろサンプルは欲しいよね…。
サンプル作るにあたってGLCanvas作るまではいいんだが、問題はどうやってOpenGL描画するかだ。
やっぱりruby-openglかなぁ。gemで入るし。
パーティクルの描画を直したけどやっぱり遅いなぁ。
描画じゃなくて更新処理をちょっと軽くしてみたらちょっと速くなった。つってもまだまだまともに使える速さじゃないけど。
うーん、やっぱり数多いし、Cで書いてもちょっとシビアそうなところだからRubyじゃつらいかなぁ。さっさと必要な仕様を決めてCで書いちゃうか。
つか描画もこれだけ多いとRuby通すのはつらいからCで…。ってもうRubyじゃなくなるー。
まあもともとCが本体でRubyはスクリプトみたいな扱いにはなるだろうなとは思ってたけどな。それでもRubyから起動するのは拡張ライブラリだとビルドが楽だからだったりする…。Rubyで書く方がいろいろ楽になってるんでそれは良かった。
パーティクルの描画はともかくPrimitiveのRestartをもっとちゃんと書く必要があるな。 つかEXT_multi_draw_arraysかNV_primitive_restartか自前でループしかないのかなぁ。