エフェクトのブレンドステートの変更
ID3D10EffectBlendVariableを使ってステートの更新をしようと試みたが
うまく行かず…。
そもそも他の変数と違ってセット関数がないので SetRawValue()を使ってセット
してみても失敗が返ってくる…。どないせいというのか。
ちなみにID3D10EffectScalarVariableだと SetRawValue()も機能する。
どうしよう…
OMSetBlendState()によるブレンドステートの更新はエフェクトには反映されて
いないような気がするし…。
色々ドキュメントを追っていくうちに、ブレンドステート自体生成したら変更を加える
ものではないという考え方が妥当なようだ。
と言うのも、生成されたブレンドステートオブジェクトには内容を変更するメソッドはないし、
1つのアプリケーションで4096個までのブレンドステートオブジェクトを生成できる時点で、
様々なタイプのステートオブジェクトを生成し、それを切り替えて使うというのを
推奨している気がする。
その流れでエフェクトファイル内のブレンドステートも変更にロックがかかっているのかもしれない。
なので、エフェクトファイル内でもブレンドステートを配列で持ち、参照ステートを切り替えるための
変数をアプリ側で切り替える方法を取ってみる事にする。
…とりあえずうまくいきました…。
他のステートに関しても同じ感じでやればいいだろう。
最終更新:2008年11月04日 16:32