え? 連休?
しかしインターネットでの申し込みのみとは。PC普及率が良いとは言えないこの業界で大丈夫なのか?
先着順ってのは去年一杯になって抽選とかあったからだろうなぁ。平日昼間からって会社なんですけどー。
あと当日までにイベントカレンダーは出るのかどうかとか。まあ出なくても参加するけど。
ちょっくら簡易プリミティブ描画とサンプルを作ってドキュメントも適当に入れてコミットしてみた。
まあ普通のglVertex系と同じようなことしか出来ないんだけど、index指定もできるようにすると便利な気がするが混在して困るかもしれん。
あー、クラス分けりゃいいのかな。今のはSimplePrimitiveだけど、IndexedSimplePrimitiveとかにするか。あー、分けなくてもいい気もするけど。
あと、やっぱりもうちょい拡張とかの判別を分かりやすいようにしよう。
せめてバージョンで分けるとか。
require 'riko' require 'riko/gl1/5' require 'riko/gl2.0' require 'riko/cg' require 'riko/g80'
とかこんな感じにして。OpenGL1.5ぐらいは最低条件にしてもいいんだが…インテルめー。
これでコンテキスト初期化した時に条件満たしてなければ例外とかね。
この方法にした時に問題なのが、どうやって機能分けようかなんだが。CgとかFBOみたいに完全に分かれてるならともかく、浮動小数点テクスチャとか綺麗に分けられないものだと困る。
Cの部分で拡張使えるかどうかのフラグ見て使えないはずのやつを使おうとしたら例外でもいいんだけどね。で、riko/gl2.0.rbの中では使えるフラグを立てまくるとか。
うーん、まあなんとか考えておくか。
Ruby/Daeもコミットしておいた。XMLParser対応してでかいファイル読み込みも速くなったよ!
あ、あれ? でもREXML版と思ったより変わらんな…。いつの間にかREXML速くなった?
XMLParser版だと書き出し整形は自分でやらなきゃならなそうだし、あんまり使えんかもなー。
そろそろXNA飽きてきたぞ。C#めんどいし*1、結局はDirectXのラッパーだし。
ContentsPipelineはとても素敵だけど、逆に言うとそれ以外は普通にC/C++でDirectX使った方がいいんじゃないかと思えてくる。
XBox360対応はまあいいんだけど…いや、実際配布しようと思ったらPCしかありえねーよ。実行できるユーザーが少なすぎる。
まあ飽きてきたとは言っても今作ってるゲーム1本は完成させるつもりだけど。
SM2.0しか使ってないのにRadeonX800とかGeForce5700Ultraでうごかねーよ、って言われるんだが、すぐ思い当たるのはNon Power of Twoなテクスチャか。
NPTテクスチャは全画面フィルタの時にしか使ってないから、そのテクスチャサイズを1024x1024とかにして800x600で使えばいいんだろ、って思ったんだが、ResolveBackBufferしてた。
ResolveBackBufferに渡すResolveTargetになるテクスチャはバックバッファと同じサイズでないと怒られるので、1024x1024のテクスチャは渡せない。
じゃあ仕方ないと思ってRenderTargetにしようかと思ったら、そういやそうだ、RenderTargetだとNVIDIAなGPUでミップマップが作れない。
条件付きでNPTテクスチャが使える機能もあるんだが、条件に「ミップマップ使わない」ってのがあるからだめだなぁ。
そんなわけで結局RenderTargetに描画して、サブレベル分のRenderTarget作って自前でフィルタかけてサブレベル作ることにした。
これの問題はサブレベル作るのがめんどいってのもあるが、ミップマップじゃなくてサブレベル分のテクスチャをシェーダに渡して自分でどれをサンプルするか選ばなきゃならんことだよな。
これやるとPS2.0で収まるかなー?
まあ最悪は、SM2.0のボードでは最低限の機能のみとしてフィルターはOFFってのもありかもね。
*1 でも思ったより速いのは良いね