Convertendo o estado de Fixed-Function do Direct3D

O runtime do Microsoft Direct3D converte o estado de função fixa do Direct3D em sombreador de vértice ou pixel versão 2.0 se o driver de exibição do modo de usuário oferecer suporte à versão 2.0 ou posterior para cada tipo de sombreador. No entanto, o runtime não converte versões de sombreador. Por exemplo, se um aplicativo usa vértice ou sombreador de pixel versão 1.1, a versão 1.1 é passada sem ser convertida para o driver de exibição do modo de usuário, independentemente de o driver dar suporte ao sombreador versão 2.0 ou posterior. Códigos FVF (formato de vértice flexível) são usados com processamento de função fixa.

Recursos de conversor para versões do DirectX

Como os conversores de sombreador de vértice e pixel de função fixa funcionam dependem da versão do Microsoft DirectX usada:

  • DirectX 9.0

    Conversores de sombreador de vértice e pixel de função fixa podem funcionar com o modelo de driver de exibição do Windows Vista.

    Os conversores são habilitados por padrão.

    Quando o vértice de função fixa ou conversor de sombreador de pixel é usado, o dispositivo puro é desabilitado. Quando um aplicativo solicita o dispositivo puro, o runtime do Direct3D cria um dispositivo HAL.

    O runtime dá suporte ao processamento de vértice misto.

    O processamento de vértice de software sempre usa o conversor de sombreador de vértice de função fixa.

    O processamento de vértice de hardware usa o conversor de sombreador de vértice de função fixa quando o driver dá suporte ao sombreador de vértice versão 2.0 ou posterior.

    O processamento de vértice de hardware usa o conversor de sombreador de pixel de função fixa quando o driver dá suporte ao sombreador de pixel versão 2.0 ou posterior.

    No modo de processamento de vértice misto quando o conversor de sombreador de vértice de função fixa estiver habilitado para hardware, o número de constantes float é definido como o que o hardware pode dar suporte.

  • DirectX 8.0 e anterior

    Conversores de sombreador de vértice e pixel de função fixa podem funcionar apenas com o modelo de driver de exibição do Windows Vista.

    Os conversores são habilitados por padrão.

    Não há suporte para o conversor de sombreador de vértice de função fixa com processamento de vértice de software.

    O processamento de vértice de hardware usa o conversor de sombreador de vértice de função fixa quando o driver dá suporte ao sombreador de vértice versão 2.0 ou posterior.

    O processamento de vértice de hardware usa o conversor de sombreador de pixel de função fixa quando o driver dá suporte ao sombreador de pixel versão 2.0 ou posterior.

    Nota Para versões do DirectX anteriores ao DirectX 8.0, a função fixa para o código de mapeamento de sombreador é implementada no Ddraw.dll.

Funções de driver de exibição de User-Mode não utilizados

As seguintes funções de driver de exibição no modo de usuário não são chamadas pelo runtime do Direct3D quando o conversor de sombreador de vértice de função fixa está habilitado:

Estados de renderização não utilizados

Os seguintes estados de renderização não são passados pelo runtime do Direct3D (ou, se passado por engano, podem ser ignorados pelo driver) quando o conversor de sombreador de vértice de função fixa está habilitado:

  • 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

Estados de estágio de textura ignorados

O runtime do Direct3D passa todos os estados do estágio de textura para o driver. O driver deve ignorar os seguintes estados de estágio de textura quando o conversor de sombreador de pixel de função fixa estiver habilitado:

  • 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