IDirect3DDevice9::ValidateDevice

現在のテクスチャー ブレンド処理および 1 つのパスの引数をレンダリングするデバイスの能力報告します。

HRESULT 
ValidateDevice(
  DWORD * pNumPasses
);

パラメータ

  • pNumPasses
    DWORD 値へのポインターです。この値には、マルチパス レンダリングを使用して必要な効果を完了するために必要なレンダリング パスの数を格納します。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、次の戻り値のいずれかを返します。D3DERR_CONFLICTINGRENDERSTATE、D3DERR_CONFLICTINGTEXTUREFILTER、D3DERR_DEVICELOST、D3DERR_DRIVERINTERNALERROR、D3DERR_TOOMANYOPERATIONS、D3DERR_UNSUPPORTEDALPHAARG、D3DERR_UNSUPPORTEDALPHAOPERATION、D3DERR_UNSUPPORTEDCOLORARG、D3DERR_UNSUPPORTEDCOLOROPERATION、D3DERR_UNSUPPORTEDFACTORVALUE、D3DERR_UNSUPPORTEDTEXTUREFILTER、D3DERR_WRONGTEXTUREFORMAT。

解説 

IDirect3DDevice9::ValidateDevice メソッドは、他の能力が不足している場合にのみシナリオを検証するため使用する必要があります。たとえば、マルチステージ テクスチャー シナリオでは、D3DCAPS9 構造体の MaxTextureBlendStages および MaxSimultaneousTextures メンバーをクエリしてデバイスでマルチステージ テクスチャーが可能かどうかを判定する場合があります。

現在のハードウェアは、処理と引数の考えられるすべての組み合わせを必ずしも実装していません。必要なブレンディング処理を設定し、IDirect3DDevice9::ValidateDevice メソッドを呼び出すことで、指定した引数を使用して特定のブレンディング処理を実行できるかどうかを判定できます。

IDirect3DDevice9::ValidateDevice メソッドは、現在のレンダリング ステート、テクスチャー、およびテクスチャー ステージ ステートを使用して、呼び出しの時点で検証を行います。呼び出しの後にこれらの要因を変更すると前の結果が無効になり、シーンのレンダリングの前にメソッドを再び呼び出す必要があります。

最適なパフォーマンスを得るには、初期化時に IDirect3DDevice9::ValidateDevice を呼び出し、レンダリング ループ内で使用しないようにします。

ディフューズ補間値 (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) を引数または処理として使用することは、現在のハードウェアではほとんどサポートされていません。ほとんどのハードウェアでは、最後のテクスチャー処理ステージでのみ補間カラー データを導入できます。

第 2 の引数ではなく最初の引数としてステージごとにテクスチャー (D3DTA_TEXTURE) を指定するようにしてください。

多くのカードでは、任意のテクスチャー ステージで補間値やスカラー値を使用することはできません。多くの場合、これらの値は最初または最後のテクスチャー ブレンディング ステージでのみ使用できます。

多くのカードは、カラー チャンネルへのアルファの複製や入力の反転以上に対応する最初にテクスチャーに関連付けられたブレンディング ユニットを持っていません。このため、可能な場合は、第 2 のテクスチャー ステージのみを使用する必要があります。このようなハードウェアでは、最初のユニットは最初のカラー引数が D3DTOP_SELECTARG1 処理の D3DTA_TEXTURE に設定された既定のステートにあるとみなされます。

カラー処理より複雑なまたはかなり異なる出力アルファの処理はほとんどサポートされていません。

一部のハードウェアは D3DTA_TFACTOR と D3DTA_DIFFUSE の同時使用をサポートしていません。

多くのカードは、複数のテクスチャーやミップマップされたトライリニア フィルタリングの同時使用はサポートされていません。マルチテクスチャー ブレンディング処理に関連するテクスチャーでトライリニア フィルタリングが要求され、検証が失敗した場合、マルチテクスチャー ブレンディングをオフにして再検証します。この場合、代わりにマルチパス レンダリングを実行することも可能です。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容

関連項目

IDirect3DDevice9::GetTextureStageState, IDirect3DDevice9::SetTextureStageState