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