トップ 最新

kumaryu日記

2010-01-26

_ 日記

なんかあたまいたいな。一回治ったと思ったんだがそうでも無かった。なんだろう。それほどつらくはないんからマシではあるんだが。

ちょっと「日記」だけではなんなので分けてみることにした。単に日記だとカテゴリもつかないしごっちゃに書きすぎだ。

ダライアスバーストのサントラが神だわー。一日中ループしまくり。

_ [Riko] Riko日記

Contextクラスをかきかき。仕様はできるだけ削ってみてたぶん出来た。機能は簡単。

  • OpenGLコンテキストの保持
  • 各リソース(テクスチャとかバッファオブジェクト)の保持とコンテキスト破棄時の後始末
  • 描画に使うシェーダ、フレームバッファ、描画設定オブジェクトの設定
  • 描画

今まで描画はPrimitiveクラスでやってたけど、今度はContext#render_primitiveとかにPrimitiveオブジェクト*1を渡して描画するようにしようかと。D3Dみたいだね!

これとContextが今つかうシェーダとかを保持してることにより、描画する前にシェーダとかに今からお前を使って描画するぜ!っていう通知ができるようになった。あと描画後にも通知できる。

今までもシェーダを設定するタイミングとかは当然シェーダオブジェクト側でも分かってたんだけど、設定はされても実際描画されるかどうかはわからんかった。シェーダ設定したけど描画する物なくって次のシェーダ設定してー、みたいなことをやるしか無かったんだけど、ほんとに描画するぜっていうタイミングが分かると、そこまでシェーダのOpenGLコンテキストへの設定が遅延できたりする。

つまりOpenGLのコマンドコールを減らして効率良くすることができると。まあいまはやらんけどね。

というわけで設計はなんとなくできたので実装をちまちま。主にコンテキストが死んだ時にいっしょに無くなるリソースを破棄できるようにしていく作業。数は多くないんだけどなんかめんどいな。

そのあとはShaderやFramebuffer、Primitiveのインターフェースと実装をContextクラスに合わせて、さらにRenderStateクラスを実装しないといけない。ちゃんと描画できるように戻るにはまだちょっとかかりそうだ。今週中くらいにできると嬉しいんだがちと無理っぽいかもな。

*1  名前変更してVertexArrayにするかもしれない