実行効率と実装効率のトレードオフ?
DirectXのレンダーターゲットの管理がちょっと面倒になってきました。
- レンダーターゲット、Zバッファの作成
- バックバッファ、Zバッファの退避
- レンダーターゲットの設定
- HLSLの変数の設定
- 描画
- レンダーターゲット、Zバッファを元に戻す
- レンダーターゲット、Zバッファの破棄
- MRTへの対応
- レンダーターゲットのフリップ
- デバイスロスト、リセット時の処理
- ハードウェアでサポートされていない場合の代替手段
レンダーターゲットへの描画前後で行う処理が多すぎませんか?
めんどくさいー。
もっと簡単に使いたいですよー。
でも、実行効率を優先すると、可読性が悪くなるのは仕方が無いですかね。
エフェクトによってどんなレンダーターゲットが何枚必要になるかわからないですし。
目的のエフェクトに特化した関数、クラスを作った方が良いのでしょうか?
例えば、DirectX SDKのHDRPipelineの実行画面のように、
グラフィカルにレンダーターゲットを編集できると良いのですが。
もちろん、HLSLをリアルタイムに編集、コンパイルしつつ。
こっちの方向でツールを作ってみても面白いかもしれませんね。