Conversione dello stato di Direct3D Fixed-Function

Il runtime di Microsoft Direct3D converte lo stato predefinito di Direct3D in vertice o pixel shader versione 2.0 se il driver di visualizzazione in modalità utente supporta la versione 2.0 o successiva per ogni tipo di shader. Tuttavia, il runtime non converte le versioni di shader. Ad esempio, se un'applicazione usa vertex o pixel shader versione 1.1, la versione 1.1 viene passata al driver di visualizzazione in modalità utente indipendentemente dal fatto che il driver supporti shader versione 2.0 o successiva. I codici FVF (Flexible Vertex Format) vengono usati con l'elaborazione a funzione fissa.

Funzionalità del convertitore per le versioni DirectX

Il funzionamento dei convertitori di vertex e pixel shader a funzione fissa dipende dalla versione di Microsoft DirectX usata:

  • DirectX 9.0

    I convertitori di vertex e pixel shader a funzione fissa possono funzionare con il modello di driver di visualizzazione di Windows Vista.

    I convertitori sono abilitati per impostazione predefinita.

    Quando viene usato il vertice fisso o il convertitore pixel shader, il dispositivo puro è disabilitato. Quando un'applicazione richiede il dispositivo puro, il runtime Direct3D crea un dispositivo HAL.

    Il runtime supporta l'elaborazione dei vertici misti.

    L'elaborazione del vertice software usa sempre il convertitore vertex vertex a funzione fissa.

    L'elaborazione del vertice hardware usa il convertitore vertex shader a funzione fissa quando il driver supporta vertex shader versione 2.0 o successiva.

    L'elaborazione del vertice hardware usa il convertitore di pixel shader a funzione fissa quando il driver supporta pixel shader versione 2.0 o successiva.

    Nella modalità di elaborazione dei vertici misti quando il convertitore vertex a funzione fissa è abilitato per l'hardware, il numero di costanti float è impostato su ciò che l'hardware può supportare.

  • DirectX 8.0 e versioni precedenti

    I convertitori di vertex e pixel shader a funzione fissa possono funzionare solo con il modello di driver di visualizzazione di Windows Vista.

    I convertitori sono abilitati per impostazione predefinita.

    Il convertitore vertex vertex non è supportato con l'elaborazione del vertice software.

    L'elaborazione del vertice hardware usa il convertitore vertex shader a funzione fissa quando il driver supporta vertex shader versione 2.0 o successiva.

    L'elaborazione del vertice hardware usa il convertitore di pixel shader a funzione fissa quando il driver supporta pixel shader versione 2.0 o successiva.

    Nota Per le versioni di DirectX precedenti a DirectX 8.0, la funzione fissa per il mapping dello shader viene implementata in Ddraw.dll.

Funzioni del driver visualizzato non usate User-Mode

Le funzioni di driver di visualizzazione in modalità utente seguenti non vengono chiamate dal runtime Direct3D quando il convertitore vertex vertex a funzione fissa è abilitato:

Stati di rendering inutilizzati

Gli stati di rendering seguenti non vengono passati dal runtime Direct3D (o, se passati per errore, possono essere ignorati dal driver) quando il convertitore vertex vertex a funzione fissa è abilitato:

  • 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

Stati di fase trama ignorati

Il runtime Direct3D passa tutti gli stati di fase trama al driver. Il driver deve ignorare gli stati della fase di trama seguenti quando il convertitore pixel shader a funzione fissa è abilitato:

  • 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