Platform SDK: DirectX |
Direct3DDevice7.ValidateDevice メソッドは、現在設定されているテクスチャのブレンディング操作とパラメータに対し、デバイスが 1 回の処理でレンダリングできる能力を報告する。
object.ValidateDevice() As Long
メソッドが成功すると、マルチパス レンダリングによってレンダリングを完了するために必要な回数を返す。
メソッドが失敗するとエラーが発生し、Err.Number に次のいずれかのエラー コードが設定される。
現在のハードウェアが、必ずしも操作と引数の可能なすべての組み合わせを実装している必要はない。特定のブレンディング操作が与えられたパラメータでできるかどうかは、必要なブレンディング操作を設定し、ValidateDevice メソッドを呼び出すことにより確認できる。
ValidateDevice メソッドは、現在設定されているレンダリング ステート、テクスチャ、テクスチャ ステージのステートを使って、呼び出された時点での確認を行なう。この呼び出しの後でこれらの要素に変更があると、それまでの確認結果は無効になるので、シーンのレンダリングをする前にこのメソッドを再度呼び出さなければならない。
ディフーズ反復値の使用は、引数としても操作としても (D3DTA_DIFFUSE または D3DTOP_BLENDDIFFUSEALPHA)、現在のハードウェアではまれにしかサポートされていない。ほとんどのハードウェアでは、直前のテクスチャ操作ステージにおけるカラーデータの反復値を導入している程度である。
各ステージのテクスチャ (D3DTA_TEXTURE) は、できるだけ、第 2 引数ではなく第 1 引数として指定する。
多くのカードは、任意のテクスチャのステージにおけるディフーズ値やスカラー値の使用はサポートしていない。これらは最初か最後のテクスチャのブレンディング ステージでのみ使えることが多い。
実際には多くのカードは、アルファ値を色チャネルへ複製したり入力を反転する以上のことができるような、最初のテクスチャと関連付けられたブレンディング ユニットを持っていない。そのため、アプリケーションでは、できれば 2 番目のテクスチャ ステージだけを使用することが必要になるかもしれない。このようなハードウェアでは、最初のユニットはデフォルト ステートにあると仮定され、D3DTOP_SELECTARG1 オペレーションの第 1 色引数は D3DTA_TEXTURE に設定される。
色操作に比べより複雑で実質的にも異なる、出力されたアルファ値に対する操作をサポートするハードウェアは、さらに少ない。
いくつかのハードウェアは、D3DTA_TFACTOR と D3DTA_DIFFUSE の同時使用をサポートしない。
また多くのカードは、マルチ テクスチャとミップマップ トライリニア フィルタリングの同時使用はサポートしない。マルチ テクスチャのブレンディング操作の中でテクスチャをトライリニア フィルタリングする要求があって、確認が失敗した場合は、トライリニア フィルタリングをやめて再度確認を行う。このようなケースでは、代わりに複数回のレンダリングをするのが最良であろう。
Direct3DDevice7.GetTextureStageState、Direct3DDevice7.SetTextureStageState