夜型になってた生活を朝方に戻してみた。
ちょっと仕事から帰るの遅くなると帰ってから即寝るしかできないのがつらい。ゲーセン寄って帰りたいよ。
しかし朝からまったりアニメ見ながらプログラミングというのもいいね。
wxRubyがwxruby2-previewじゃなくて1.9とかになってそろそろ2になる感じ。
といってもWindows版が終了時に落ちる問題があるみたいだけど。
2になるまでにはGLCanvas入れて貰えると嬉しいんでパッチ製作中。
そもそもGLCanvas使うにはwxWidgets自体をGLCanvas付きでコンパイルしなきゃならんのだけど、今までwxWidgetsがGLCanvas付きかどうかRakefileで判別する方法が思い付かなくてパッチ送るのはやめてた。
しかしちょっと前からwxScintilla付きでコンパイルされてるかどうかの判別がRakefileに入ってたんでそれを参考にするようにした。
やってることはwx-config --libs std,glでライブラリファイル名拾ってきてFile.exists?でそれがほんとにあるかどうか確認。
…ってこれダメだろ。
OpenGL対応入れてない元のコードはこんなん。
$wx_libs = wx_config("--libs std,stc") # Check whether there is a lib file for StyledTextCtrl (Scintilla). If # not, don't try and compile this file. stc_lib = $wx_libs[/\S+libwx\S+_stc\S+/] if stc_lib.nil? or not File.exists?(stc_lib) $wx_libs = wx_config("--libs std") $excluded_classes << 'StyledTextCtrl' end
wx-config --libs std,stcの結果から/opt/local/lib/libwx_mac_stcl-2.8.aとか拾って来ようとしてるっぽいね。
でもwx-config --libs std,stcの結果は…
-L/opt/local/lib -framework IOKit -framework Carbon -framework Cocoa -framework System -framework QuickTime \ -lwx_mac_stc-2.8 -lwx_mac_aui-2.8 -lwx_mac_xrc-2.8 -lwx_mac_qa-2.8 -lwx_mac_html-2.8 \ -lwx_mac_adv-2.8 -lwx_mac_core-2.8 -lwx_base_carbon_xml-2.8 -lwx_base_carbon_net-2.8 -lwx_base_carbon-2.8
ですよねー。gccな環境なら大抵こうなりますよねー。
VC++専用かよ!とか思ったが、VC++はwx-config使わないじゃん。このコード書いた奴は一体どんな環境で…?
やっぱこんな手抜きコードじゃだめじゃん。ちゃんとリンクしてみて確認しないとー。
やる気なくした。だめだこりゃ。wxRubyはビルド周りがgdgdだからなー。
数学部分をちょっと修正。
どうしても無駄にオブジェクト作りまくってしまうのを回避するために、既にあるオブジェクトに値をぶち込みまくるメソッド(主にMatrix)を追加しといた。
まだまだだけどね。
あとやっぱりSIMD対応もしたいわー。でもSIMD使うとコンパイル単位を分ける必要があるからなぁ。いやでも最初のSSEだけならコンパイル時に使用/非使用を決めるだけでもいいかな。
Pen3以前のCPUでOpenGL使いたいとか無いだろうしほぼ気にしなくていいかなぁ。
で、それはともかく数学関係のクラスもドキュメント書こうと思ったんだが、RDocのCパーサー役にたたねぇな。
cppもパースしてくれるのはいいんだが、クラスと認識してくれるのはrb_define_classを使ってるところだけ。メソッドとして認識してくれるのはrb_define_methodを使ってるところだけ。
まあC++でラップしちゃってるんで認識してくれないのは仕方ないな。
でもさ、Document-class:とかDocument-method:をコメントに書いておけばドキュメントと認識してくれるんだが、そもそもrb_defined_classが書かれてない場合にはクラスがあるものと認識してくれないのはなんなんだ。
ソースを解析してくれなくてもいいからドキュメントだけ作ってくれればいいのに。
仕方ないからコメントにrb_define_classを書いて…ってなんか変な感じだが。
RDocはあんまり好きじゃないんだが、他に良いのがあるかというと無いので仕方ない。
それはともかくゲームも作りたいが一体どこから手をつけたものやら。 今のままだとものすごく使えないのは理解してるんだが。
Contextクラス作ってそこでシェーダとか管理するようにしないと、とは思うんだが、どのレベルでやろう?
Rikoレベル? その上のレベル? あー、Rikoでやろっか。