実行効率と実装効率のトレードオフ?

DirectXのレンダーターゲットの管理がちょっと面倒になってきました。

  • レンダーターゲット、Zバッファの作成
  • バックバッファ、Zバッファの退避
  • レンダーターゲットの設定
  • HLSLの変数の設定
  • 描画
  • レンダーターゲット、Zバッファを元に戻す
  • レンダーターゲット、Zバッファの破棄
  • MRTへの対応
  • レンダーターゲットのフリップ
  • バイスロスト、リセット時の処理
  • ハードウェアでサポートされていない場合の代替手段

レンダーターゲットへの描画前後で行う処理が多すぎませんか?

めんどくさいー。
もっと簡単に使いたいですよー。

でも、実行効率を優先すると、可読性が悪くなるのは仕方が無いですかね。
エフェクトによってどんなレンダーターゲットが何枚必要になるかわからないですし。
目的のエフェクトに特化した関数、クラスを作った方が良いのでしょうか?




例えば、DirectX SDKのHDRPipelineの実行画面のように、
グラフィカルにレンダーターゲットを編集できると良いのですが。


もちろん、HLSLをリアルタイムに編集、コンパイルしつつ。




こっちの方向でツールを作ってみても面白いかもしれませんね。

その前に

OpenGLのレンダーターゲットの扱いが気になったので、しばらくOpenGLを触ってみようと思っています。
OpenGLに関しては、ポリゴンを表示できる程度の能力です。