次の方法で共有


Direct3D の固定機能状態の変換

Microsoft Direct3D ランタイムは、ユーザー モード ディスプレイ ドライバーがシェーダーの種類ごとにバージョン 2.0 以降をサポートしている場合、Direct3D 固定関数の状態を頂点シェーダーまたはピクセル シェーダー バージョン 2.0 に変換します。 ただし、ランタイムはシェーダー バージョンを変換しません。 たとえば、アプリケーションで頂点シェーダーまたはピクセル シェーダー バージョン 1.1 を使用している場合、ドライバーがシェーダー バージョン 2.0 以降をサポートしているかどうかに関係なく、バージョン 1.1 はユーザー モードディスプレイ ドライバーに非変換で渡されます。 Flexible Vertex Format (FVF) コードは、固定関数処理で使用されます。

DirectX バージョンのコンバーター機能

固定関数頂点およびピクセル シェーダー コンバーターの動作は、使用されている Microsoft DirectX のバージョンによって異なります。

  • DirectX 9.0

    固定関数頂点およびピクセル シェーダー コンバーターは、Windows Vista ディスプレイ ドライバー モデルで動作できます。

    コンバーターは既定で有効になっています。

    固定関数頂点またはピクセル シェーダー コンバーターを使用すると、純粋なデバイスは無効になります。 アプリケーションが純粋なデバイスを要求すると、Direct3D ランタイムによって HAL デバイスが作成されます。

    ランタイムは、混合頂点処理をサポートします。

    ソフトウェア頂点処理では、常に固定関数頂点シェーダー コンバーターが使用されます。

    ハードウェア頂点処理では、ドライバーが頂点シェーダー バージョン 2.0 以降をサポートしている場合に、固定関数頂点シェーダー コンバーターを使用します。

    ハードウェア頂点処理では、ドライバーがピクセル シェーダー バージョン 2.0 以降をサポートしている場合に、固定関数ピクセル シェーダー コンバーターを使用します。

    ハードウェアに対して固定関数頂点シェーダー コンバーターが有効になっている場合の混合頂点処理モードでは、浮動小数点定数の数がハードウェアでサポートできる数に設定されます。

  • DirectX 8.0 以前

    固定関数頂点およびピクセル シェーダー コンバーターは、Windows Vista ディスプレイ ドライバー モデルのみで動作できます。

    コンバーターは既定で有効になっています。

    固定関数頂点シェーダー コンバーターは、ソフトウェア頂点処理ではサポートされていません。

    ハードウェア頂点処理では、ドライバーが頂点シェーダー バージョン 2.0 以降をサポートしている場合に、固定関数頂点シェーダー コンバーターを使用します。

    ハードウェア頂点処理では、ドライバーがピクセル シェーダー バージョン 2.0 以降をサポートしている場合に、固定関数ピクセル シェーダー コンバーターを使用します。

    注: DirectX 8.0 より前のバージョンの DirectX では、シェーダー マッピング コードへの固定関数が Ddraw.dll に実装されています。

未使用のユーザー モード ディスプレイ ドライバー関数

次のユーザー モード ディスプレイ ドライバー関数は、固定関数頂点シェーダー コンバーターが有効になっている場合、Direct3D ランタイムによって呼び出されません。

未使用のレンダリング状態

次のレンダリング状態は、固定関数頂点シェーダー コンバーターが有効になっている場合、Direct3D ランタイムによって渡されません (または、誤って渡された場合はドライバーによって無視される可能性があります)。

  • D3DRS_VERTEXBLEND

  • D3DRS_INDEXEDVERTEXBLENDENABLE

  • D3DRS_TWEENFACTOR

  • D3DRS_FOGVERTEXMODE

  • D3DRS_LIGHTING

  • D3DRS_AMBIENT

  • D3DRS_COLORVERTEX

  • D3DRS_LOCALVIEWER

  • D3DRS_DIFFUSEMATERIALSOURCE

  • D3DRS_SPECULARMATERIALSOURCE

  • D3DRS_AMBIENTMATERIALSOURCE

  • D3DRS_EMISSIVEMATERIALSOURCE

  • D3DRS_POINTSCALEENABLE

  • D3DRS_POINTSCALE_A

  • D3DRS_POINTSCALE_B

  • D3DRS_POINTSCALE_C

  • D3DRS_NORMALIZENORMALS

無視されたテクスチャ ステージの状態

Direct3D ランタイムは、すべてのテクスチャ ステージ状態をドライバーに渡します。 固定関数ピクセル シェーダー コンバーターが有効になっている場合、ドライバーは次のテクスチャ ステージの状態を無視する必要があります。

  • D3DTSS_COLOROP

  • D3DTSS_COLORARG1

  • D3DTSS_COLORARG2

  • D3DTSS_ALPHAOP

  • D3DTSS_ALPHAARG1

  • D3DTSS_ALPHAARG2

  • D3DTSS_BUMPENVMAT00

  • D3DTSS_BUMPENVMAT01

  • D3DTSS_BUMPENVMAT10

  • D3DTSS_BUMPENVMAT11

  • D3DTSS_BUMPENVLSCALE

  • D3DTSS_BUMPENVLOFFSET

  • D3DTSS_COLORARG0

  • D3DTSS_ALPHAARG0

  • D3DTSS_RESULTARG

  • D3DTSS_CONSTANT