Freigeben über


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