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