Sdílet prostřednictvím


Převod stavu Direct3D Fixed-Function

Modul Microsoft Direct3D runtime převádí stav pevně definovaných funkcí Direct3D na vertex nebo pixel shader verze 2.0, pokud ovladač zobrazení v uživatelském režimu podporuje verzi 2.0 nebo novější pro každý typ shaderu. Modul runtime však nepřevádí verze shaderu. Pokud například aplikace používá vertex nebo pixel shader verze 1.1, verze 1.1 se nepřevedená předá ovladači zobrazení v uživatelském režimu, a to bez ohledu na to, zda ovladač podporuje shader verze 2.0 nebo novější. Kódy flexibilního formátu vrcholů (FVF) se používají při zpracování s pevnou funkcí.

Funkce převaděče pro verze DirectX

Jak fungují převaděče vrcholového a pixelového shaderu s pevnou funkcí, závisí na používané verzi rozhraní Microsoft DirectX.

  • DirectX 9.0

    Převaděče vrcholů s pevnou funkcí a pixel shader mohou pracovat s modelem ovladače zobrazení systému Windows Vista.

    Převaděče jsou ve výchozím nastavení povolené.

    Pokud se použije převaděč pro vertexový nebo pixelový shader s pevnou funkcí, je čisté zařízení zakázané. Když aplikace požádá o čisté zařízení, modul runtime Direct3D vytvoří zařízení HAL.

    Modul runtime podporuje smíšené zpracování vrcholů.

    Softwarové zpracování vrcholů vždy používá převaděč vertex shaderu s pevnou funkcí.

    Hardwarové zpracování vrcholů používá převaděč vertex shaderu pevné funkce, pokud ovladač podporuje shader verze 2.0 či vyšší.

    Zpracování vrcholů hardwaru používá převaděč shaderu pixelů s pevnou funkcí, pokud ovladač podporuje pixel shader verze 2.0 nebo novější.

    V režimu zpracování smíšených vrcholů, pokud je povolen převaděč shaderu vrcholů s pevnou funkcí pro hardware, je počet plovoucích konstant nastaven na to, co hardware může podporovat.

  • DirectX 8.0 a starší

    Pevné funkční převaděče pro vrcholy a pixelové shadery můžou pracovat pouze s modelem ovladače zobrazení systému Windows Vista.

    Převaděče jsou ve výchozím nastavení povolené.

    Převaděč shaderu vrcholů s pevnou funkcí není podporován při softwarovém zpracování vrcholů.

    Zpracování vrcholů hardwaru používá převaděč vertex shaderu s pevnou funkcí, pokud ovladač podporuje shader vrcholů verze 2.0 nebo novější.

    Zpracování vrcholů hardwaru používá převaděč shaderu pixelů s pevnou funkcí, pokud ovladač podporuje pixel shader verze 2.0 nebo novější.

    Poznámka Pro verze DirectX před DirectX 8.0 je pevná funkce pro mapování kódu shaderu implementována v Ddraw.dll.

Nepoužívané funkce ovladače User-Mode display

Následující funkce ovladače zobrazení v uživatelském režimu nejsou volána Direct3D runtimem, pokud je povolen převaděč vertex shaderu s pevnou funkcí:

Nepoužité stavy vykreslení

Následující stavy vykreslování nejsou předány modulem runtime Direct3D (nebo pokud jsou předány omylem, mohou být ovladačem ignorovány), pokud je povolen převodník pevného funkčního vertexového shaderu:

  • 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

Ignorované stavy fáze textury

Modul runtime Direct3D předá ovladači všechny stavy fáze textury. Ovladač by měl ignorovat následující stavy textury, pokud je povolen převaděč shaderu pixel s pevnou funkcí:

  • 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