Konvertieren des Direct3D-Fixed-Function-Zustands
Die Microsoft Direct3D-Runtime konvertiert den Direct3D-Zustand mit festen Funktionen in Vertex- oder Pixel-Shader Version 2.0, wenn der Benutzermodusanzeigetreiber version 2.0 oder höher für jeden Shadertyp unterstützt. Die Runtime konvertiert jedoch keine Shaderversionen. Wenn eine Anwendung beispielsweise Vertex- oder Pixel-Shader Version 1.1 verwendet, wird Version 1.1 unkonvertiert an den Benutzermodusanzeigetreiber übergeben, unabhängig davon, ob der Treiber Shaderversion 2.0 oder höher unterstützt. FVF-Codes (Flexible Vertex Format) werden bei der Verarbeitung mit festen Funktionen verwendet.
Konverterfeatures für DirectX-Versionen
Wie die Vertex- und Pixel-Shaderkonverter mit festen Funktionen funktionieren, hängt von der verwendeten Version von Microsoft DirectX ab:
DirectX 9.0
Vertex- und Pixel-Shaderkonverter mit festen Funktionen können mit dem Windows Vista-Anzeigetreibermodell funktionieren.
Die Konverter sind standardmäßig aktiviert.
Wenn der Vertex- oder Pixel-Shaderkonverter mit fester Funktion verwendet wird, wird das reine Gerät deaktiviert. Wenn eine Anwendung das reine Gerät anfordert, erstellt die Direct3D-Runtime ein HAL-Gerät.
Die Runtime unterstützt die Verarbeitung gemischter Scheitelpunkte.
Bei der Softwarevertexverarbeitung wird immer der Vertex-Shaderkonverter mit fester Funktion verwendet.
Die Hardwarevertexverarbeitung verwendet den Vertex-Shaderkonverter mit festen Funktionen, wenn der Treiber Vertex-Shader version 2.0 oder höher unterstützt.
Die Hardwarevertexverarbeitung verwendet den Pixel-Shaderkonverter mit fester Funktion, wenn der Treiber Pixel-Shader version 2.0 oder höher unterstützt.
Im Mixed-Vertex-Verarbeitungsmodus, wenn der Vertex-Shaderkonverter mit fester Funktion für Hardware aktiviert ist, wird die Anzahl der Floatkonstanten auf das festgelegt, was die Hardware unterstützen kann.
DirectX 8.0 und früher
Vertex- und Pixel-Shaderkonverter mit festen Funktionen können nur mit dem Windows Vista-Anzeigetreibermodell funktionieren.
Die Konverter sind standardmäßig aktiviert.
Der Vertex-Shaderkonverter mit festen Funktionen wird bei der Softwarevertexverarbeitung nicht unterstützt.
Die Hardwarevertexverarbeitung verwendet den Vertex-Shaderkonverter mit festen Funktionen, wenn der Treiber Vertex-Shader version 2.0 oder höher unterstützt.
Die Hardwarevertexverarbeitung verwendet den Pixel-Shaderkonverter mit fester Funktion, wenn der Treiber Pixel-Shader version 2.0 oder höher unterstützt.
Hinweis Für Versionen von DirectX vor DirectX 8.0 wird die feste Funktion für Shaderzuordnungscode in Ddraw.dllimplementiert.
Nicht verwendete User-Mode Anzeigetreiberfunktionen
Die folgenden Benutzermodusanzeigetreiberfunktionen werden von der Direct3D-Runtime nicht aufgerufen, wenn der Vertex-Shaderkonverter für feste Funktionen aktiviert ist:
Nicht verwendete Renderzustände
Die folgenden Renderzustände werden nicht von der Direct3D-Runtime übergeben (oder, wenn sie versehentlich übergeben werden, können vom Treiber ignoriert werden), wenn der Vertex-Shaderkonverter mit festen Funktionen aktiviert ist:
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
Ignorierte Texturstufenzustände
Die Direct3D-Runtime übergibt alle Texturphasenzustände an den Treiber. Der Treiber sollte die folgenden Texturstufenzustände ignorieren, wenn der Pixel-Shaderkonverter mit fester Funktion aktiviert ist:
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