Platform SDK: DirectX

Direct3DDevice7.ValidateDevice

Direct3DDevice7.ValidateDevice メソッドは、現在設定されているテクスチャのブレンディング操作とパラメータに対し、デバイスが 1 回の処理でレンダリングできる能力を報告する。

object.ValidateDevice() As Long

パラメータ

object
Direct3DDevice7 オブジェクトを表すオブジェクト式。

戻り値

メソッドが成功すると、マルチパス レンダリングによってレンダリングを完了するために必要な回数を返す。

エラー コード

メソッドが失敗するとエラーが発生し、Err.Number に次のいずれかのエラー コードが設定される。

DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
D3DERR_CONFLICTINGTEXTUREFILTER
D3DERR_TOOMANYOPERATIONS
D3DERR_UNSUPPORTEDALPHAARG
D3DERR_UNSUPPORTEDALPHAOPERATION
D3DERR_UNSUPPORTEDCOLORARG
D3DERR_UNSUPPORTEDCOLOROPERATION
D3DERR_UNSUPPORTEDFACTORVALUE
D3DERR_UNSUPPORTEDTEXTUREFILTER
D3DERR_WRONGTEXTUREFORMAT

注意

現在のハードウェアが、必ずしも操作と引数の可能なすべての組み合わせを実装している必要はない。特定のブレンディング操作が与えられたパラメータでできるかどうかは、必要なブレンディング操作を設定し、ValidateDevice メソッドを呼び出すことにより確認できる。

ValidateDevice メソッドは、現在設定されているレンダリング ステート、テクスチャ、テクスチャ ステージのステートを使って、呼び出された時点での確認を行なう。この呼び出しの後でこれらの要素に変更があると、それまでの確認結果は無効になるので、シーンのレンダリングをする前にこのメソッドを再度呼び出さなければならない。

ディフーズ反復値の使用は、引数としても操作としても (D3DTA_DIFFUSE または D3DTOP_BLENDDIFFUSEALPHA)、現在のハードウェアではまれにしかサポートされていない。ほとんどのハードウェアでは、直前のテクスチャ操作ステージにおけるカラーデータの反復値を導入している程度である。

各ステージのテクスチャ (D3DTA_TEXTURE) は、できるだけ、第 2 引数ではなく第 1 引数として指定する。

多くのカードは、任意のテクスチャのステージにおけるディフーズ値やスカラー値の使用はサポートしていない。これらは最初か最後のテクスチャのブレンディング ステージでのみ使えることが多い。

実際には多くのカードは、アルファ値を色チャネルへ複製したり入力を反転する以上のことができるような、最初のテクスチャと関連付けられたブレンディング ユニットを持っていない。そのため、アプリケーションでは、できれば 2 番目のテクスチャ ステージだけを使用することが必要になるかもしれない。このようなハードウェアでは、最初のユニットはデフォルト ステートにあると仮定され、D3DTOP_SELECTARG1 オペレーションの第 1 色引数は D3DTA_TEXTURE に設定される。

色操作に比べより複雑で実質的にも異なる、出力されたアルファ値に対する操作をサポートするハードウェアは、さらに少ない。

いくつかのハードウェアは、D3DTA_TFACTORD3DTA_DIFFUSE の同時使用をサポートしない。

また多くのカードは、マルチ テクスチャとミップマップ トライリニア フィルタリングの同時使用はサポートしない。マルチ テクスチャのブレンディング操作の中でテクスチャをトライリニア フィルタリングする要求があって、確認が失敗した場合は、トライリニア フィルタリングをやめて再度確認を行う。このようなケースでは、代わりに複数回のレンダリングをするのが最良であろう。

参照

Direct3DDevice7.GetTextureStageStateDirect3DDevice7.SetTextureStageState