11月4日(2008)


エフェクトのブレンドステートの変更

ID3D10EffectBlendVariableを使ってステートの更新をしようと試みたが
うまく行かず…。
そもそも他の変数と違ってセット関数がないので SetRawValue()を使ってセット
してみても失敗が返ってくる…。どないせいというのか。
ちなみにID3D10EffectScalarVariableだと SetRawValue()も機能する。

どうしよう…

OMSetBlendState()によるブレンドステートの更新はエフェクトには反映されて
いないような気がするし…。

色々ドキュメントを追っていくうちに、ブレンドステート自体生成したら変更を加える
ものではないという考え方が妥当なようだ。
と言うのも、生成されたブレンドステートオブジェクトには内容を変更するメソッドはないし、
1つのアプリケーションで4096個までのブレンドステートオブジェクトを生成できる時点で、
様々なタイプのステートオブジェクトを生成し、それを切り替えて使うというのを
推奨している気がする。

その流れでエフェクトファイル内のブレンドステートも変更にロックがかかっているのかもしれない。
なので、エフェクトファイル内でもブレンドステートを配列で持ち、参照ステートを切り替えるための
変数をアプリ側で切り替える方法を取ってみる事にする。

…とりあえずうまくいきました…。
他のステートに関しても同じ感じでやればいいだろう。
最終更新:2008年11月04日 16:32
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。