kumaryu日記
2009-09-14 風邪引いた
_ [Riko] 2D用にいろいろ改造
Rikoは今までOpenGL 1.2+VBO+Vertex Programが必須だったんだけど、2Dだけ使うときにはちょっと厳しい。
というか、WindowsでなぜかOpenGLのアクセラレーションが使えないというときに動かせないんだよね。普通にGeForceささってても起きるらしい。マルチモニターかなぁ。 あとは仮想マシン中で動かないよ!とか言われたりもするので。
2Dで適当に表示したいだけのときにそんな環境で動かないのはめんどいので、Windowsのソフトウェアレンダラーでも2Dは動くように改造。
OpenGL1.1+拡張無しでどのくらい苦労するかと思ったけど、思ったより簡単だった。
一応固定シェーダは実装してたし、マルチテクスチャは固定シェーダでは使ってなかったし*1、あとはVBOくらい。VBOは完全に拡張ライブラリ側で隠蔽して、拡張機能が無ければ勝手にメインメモリ上で扱うようにフォールバックするようにした。
基本的にはこれだけ。機能を省いたりはしてないので無い機能使えば例外出して落ちる。けど2Dだけなら意外と動く。
2D的な制限としては減算ブレンドと二次カラーが使えないくらいか。あとテクスチャ座標のラップモードがCLAMPになるのが怖い。CLAMP_TO_EDGEがつかえない><
後でコミットしておくか。
これと別に、SDLかSDLを使うライブラリをラッピングして使う手も考えてたんだが、その場合はwxRubyと組み合わせるのが非常に難しいことに気づいたので断念した。
これで機能制限付き2DだけならOpenGL1.1だけで動くようになったけど、逆に最近なら3Dはもっと激しく要求してもいいかなぁ。GMA950を切っていいならGLSL前提にできるんだけどどうなんだろう。FBOも前提にできるとうれしいんだが。
どうなんだろうも何も、俺がどこまで切る気になれるかだよな。難しいものだ…。
ああ、そんなことよりCOLLADA読み込みやろう。シェーダ書くのめんどいよ。
*1 TexEnv辺りを実装してなかったのでつかいみちがなかった&使う気もなかった