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 マップされた三線フィルター処理の同時使用を試みます。 多くのカードでは、これらの操作が同時にサポートされていません。 マルチテクスチャ操作に関係するテクスチャに対して三線フィルター処理が要求され、検証に失敗した場合は、三線式をオフにして、もう一度試してください。 この場合は、代わりにマルチパス レンダリングを実行することをお勧めします。

要件

要件
対象プラットフォーム デスクトップ
Header d3dhal.h (D3dhal.h を含む)

こちらもご覧ください

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2