Platform SDK: DirectX

IDirect3DDevice7::ValidateDevice

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

HRESULT ValidateDevice(
  LPDWORD lpdwPasses
);

パラメータ

lpdwPasses
マルチパス レンダリングによって希望のエフェクトを完成するためのレンダリング パスの数を格納するアドレス。

戻り値

成功すれば D3D_OK を返す。

失敗すれば、次のいずれかの値を返す。

DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
D3DERR_CONFLICTINGTEXTUREFILTER
D3DERR_CONFLICTINGTEXTUREPALETTE
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_TFACTOR および D3DTA_DIFFUSE の同時使用をサポートしていない場合もある。

また多くのカードは、マルチテクスチャとミップマップ トライリニア フィルタリングの同時使用はサポートしない。マルチ テクスチャ ブレンディング処理におけるテクスチャに対してトライリニア フィルタリングが要求された場合、妥当性検証が失敗すると、トライリニア フィルタリングはオフになり再検証が行われる。このような場合には、代わりにマルチパス レンダリングを実行することができる。

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  バージョン :DirectX 7.0 が必要。
  ヘッダー : d3d.h で宣言。

参照

IDirect3DDevice7::GetTextureStageStateIDirect3DDevice7::SetTextureStageState