Condividi tramite


Conversione dello stato di funzione fissa Direct3D

Il runtime di Microsoft Direct3D converte lo stato a funzione fissa Direct3D in vertex 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 dello 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 funzionalità fissa possono funzionare con il modello di driver di visualizzazione di Windows Vista.

    I convertitori sono abilitati per impostazione predefinita.

    Quando viene usato il convertitore di vertex o pixel shader a funzione fissa, 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 dei vertici software usa sempre il convertitore di vertex shader a funzione fissa.

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

    L'elaborazione dei vertici hardware usa il convertitore 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 di vertex shader a funzione fissa è abilitato per l'hardware, il numero di costanti float viene 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 di vertex shader a funzione fissa non è supportato con l'elaborazione dei vertici software.

    L'elaborazione hardware dei vertici utilizza il convertitore a funzione fissa del vertex shader se il driver supporta la versione 2.0 o successiva del vertex shader.

    L'elaborazione dei vertici hardware usa il convertitore 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 al codice di mapping dello shader viene implementata in Ddraw.dll.

Funzioni inutilizzate del driver video User-Mode

Le funzioni del driver di visualizzazione in modalità utente seguenti non vengono chiamate dal runtime Direct3D quando il convertitore vertex shader 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 shader 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 delle fasi di texture ignorati

Il runtime Direct3D passa tutti gli stati della fase della 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