次の方法で共有


LPD3DHAL_VALIDATETEXTURESTAGESTATECBコールバック関数 (d3dhal.h)

D3dValidateTextureStageState 関数は、ハードウェアが現在の状態で指定されたブレンド操作を実行できるパスの数を返します。

構文

LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;

DWORD Lpd3dhalValidatetexturestagestatecb(
  LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}

パラメーター

unnamedParam1

pvtssd [in]

ドライバーがブレンド操作を実行するために必要なパスの数を決定して返すために必要な情報を含む D3DHAL_VALIDATETEXTURESTAGESTATEDATA 構造体を指します。

戻り値

D3dValidateTextureStageState は、次のいずれかのコールバック コードを返します。

備考

テクスチャリングをサポートする Microsoft Direct3D ドライバーは、D3dValidateTextureStageState 実装する必要があります。

この関数のドライバーの実装では、コンテキストに関連付けられているすべてのテクスチャ ステージの現在のテクスチャ状態を評価する必要があります。 ドライバーのハードウェアが指定されたブレンド操作を実行できる場合、ドライバーは、そのハードウェアが必要とする状態データのパスの数を返す必要があります。 ハードウェアが指定されたブレンド操作を実行できない場合、ドライバーは、pvtssd の D3DHAL_VALIDATETEXTURESTAGESTATEDATA 構造体の ddrval メンバーで次のいずれかのエラー コード返す必要があります。

エラー コード 意味
D3DERR_CONFLICTINGTEXTUREFILTER ハードウェアでは、トライリニア フィルタリングとマルチテクスチャリングの両方を同時に実行することはできません。
D3DERR_TOOMANYOPERATIONS ハードウェアは、指定された数の操作を処理できません。
D3DERR_UNSUPPORTEDALPHAARG ハードウェアは、指定されたアルファ引数をサポートしていません。
D3DERR_UNSUPPORTEDALPHAOPERATION ハードウェアは、指定されたアルファ操作をサポートしていません。
D3DERR_UNSUPPORTEDCOLORARG ハードウェアは、指定された色引数をサポートしていません。
D3DERR_UNSUPPORTEDCOLOROPERATION ハードウェアは、指定された色操作をサポートしていません。
D3DERR_UNSUPPORTEDFACTORVALUE ハードウェアは、1.0 より大きいD3DTA_TFACTORをサポートしていません。
D3DERR_WRONGTEXTUREFORMAT ハードウェアは、選択したテクスチャ形式の現在の状態をサポートしていません。

 

Direct3D は、IDirect3DDevice7::ValidateDeviceの呼び出しを通じて、アプリケーション要求に応答して D3dValidateTextureStageState を呼び出します。 ドライバーによって返されるパスの数は、アプリケーションに反映されます。これにより、現在の状態を使用してレンダリングを続行するか、より高速にレンダリングするか、まったくレンダリングするようにブレンド操作を変更する必要があるかを決定できます。 ドライバーが返すことができるパスの数に制限はありません。

複数のパスを返すドライバーは、レンダリング時にすべての状態とプリミティブ データでパスを適切に実行する役割を担います。

D3dValidateTextureStageState 失敗する可能性がある要求:

  • 拡散反復値を ARG として使用するか、BLENDDIFFUSE 操作が現在のハードウェアで疎にサポートされています。 多くの部分では、最後のテクスチャ操作ステージで反復処理された色データのみを導入できます。

  • arg2 を優先して、各ステージのテクスチャを arg1 として指定しようとしています。

  • 任意のマルチテクスチャ ブレンド ステージで拡散またはスカラー値を使用しようとしています。 多くのカードでは、これらの値は最終的なテクスチャ ブレンド状態でのみ使用できます。他のユーザーに対しては、最初のステージでのみ使用できます。

  • 最初のテクスチャで、単にアルファをカラー チャネルにレプリケートしたり、入力を反転したりするよりも多くのことを試みます。 多くのカードでは、最初のテクスチャに関連付けられているブレンド ユニットは、これらよりも複雑な操作を処理できません。 次のサンプルでは、可能であれば、2 番目のテクスチャのブレンド ユニットのみを使用しようとします。 最初のユニットは、サンプルの既定の状態にあると推定されます。

    dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE );   *
    dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
    
  • カラー チャネルに指定された操作よりも複雑な、または実質的に異なる出力アルファの操作を実行することは、サポートされる可能性が低くなります。

  • D3DTA_TFACTORとD3DTA_DIFFUSEを同時に使用しようとしています。 一部のハードウェアではこれをサポートしていません。

  • 複数のテクスチャと MIP マップされたトライリニア フィルタリングの同時使用を試みます。 多くのカードでは、これらの操作が同時にサポートされていません。 マルチテクスチャ操作に関係するテクスチャに対してトライリニア フィルタリングが要求されており、検証に失敗した場合は、トライリニアをオフにして、もう一度試してください。 この場合は、代わりにマルチパス レンダリングを実行することをお勧めします。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー d3dhal.h (D3dhal.h を含む)

関連項目

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2