IDirect3DDevice9::ValidateDevice メソッド (d3d9helper.h)
現在のテクスチャ ブレンド操作と引数を 1 回のパスでレンダリングするデバイスの機能を報告します。
構文
HRESULT ValidateDevice(
[out, retval] DWORD *pNumPasses
);
パラメーター
[out, retval] pNumPasses
種類: DWORD*
マルチパス レンダリングを通じて目的の効果を完了するために必要なレンダリング パスの数を埋める DWORD 値へのポインター。
戻り値
種類: HRESULT
メソッドが成功した場合、戻り値は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 番目のテクスチャ ステージのみを使用する必要がある場合があります。 このようなハードウェアでは、最初のユニットは既定の状態と見なされ、最初の color 引数はD3DTOP_SELECTARG1操作でD3DTA_TEXTUREに設定されます。
出力アルファに対する、カラー操作よりも複雑な操作や、色操作と大きく異なる演算は、サポートされる可能性が低くなります。
一部のハードウェアでは、D3DTA_TFACTORとD3DTA_DIFFUSEの同時使用がサポートされていません。
多くのカードでは、複数のテクスチャと mipmapped 三線式フィルタリングの同時使用はサポートされていません。 マルチテキスト ブレンド操作に関係するテクスチャに対して三線フィルター処理が要求され、検証が失敗した場合は、三線フィルター処理をオフにして再検証します。 この場合は、代わりにマルチパス レンダリングを実行する必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d9helper.h (D3D9.h を含む) |
Library | D3D9.lib |