LPD3DHAL_VALIDATETEXTURESTAGESTATECB função de retorno de chamada (d3dhal.h)
A função D3dValidateTextureStageState retorna o número de passagens em que o hardware pode executar as operações de mesclagem especificadas no estado atual.
Sintaxe
LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;
DWORD Lpd3dhalValidatetexturestagestatecb(
LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}
Parâmetros
unnamedParam1
pvtssd [in]
Aponta para uma estrutura D3DHAL_VALIDATETEXTURESTAGESTATEDATA que contém as informações necessárias para o driver determinar e retornar o número de passagens necessárias para executar as operações de mesclagem.
Retornar valor
D3dValidateTextureStageState retorna um dos seguintes códigos de retorno de chamada:
Comentários
Os drivers do Microsoft Direct3D que dão suporte à texturing devem implementar D3dValidateTextureStageState.
A implementação dessa função pelo driver deve avaliar o estado de textura atual para todos os estágios de textura associados ao contexto. Se o hardware do driver puder executar as operações de mesclagem especificadas, o driver deverá retornar o número de passes nos dados de estado exigidos pelo hardware. Se o hardware não puder executar as operações de mesclagem especificadas, o driver deverá retornar um dos seguintes códigos de erro no membro ddrval da estrutura de D3DHAL_VALIDATETEXTURESTAGESTATEDATA em pvtssd:
Código do Erro | Significado |
---|---|
D3DERR_CONFLICTINGTEXTUREFILTER | O hardware não pode fazer filtragem trilinear e multitextação ao mesmo tempo. |
D3DERR_TOOMANYOPERATIONS | O hardware não pode lidar com o número especificado de operações. |
D3DERR_UNSUPPORTEDALPHAARG | O hardware não dá suporte a um argumento alfa especificado. |
D3DERR_UNSUPPORTEDALPHAOPERATION | O hardware não dá suporte a uma operação alfa especificada. |
D3DERR_UNSUPPORTEDCOLORARG | O hardware não dá suporte a um argumento de cor especificado. |
D3DERR_UNSUPPORTEDCOLOROPERATION | O hardware não dá suporte a uma operação de cor especificada. |
D3DERR_UNSUPPORTEDFACTORVALUE | O hardware não dá suporte a um D3DTA_TFACTOR maior que 1.0. |
D3DERR_WRONGTEXTUREFORMAT | O hardware não dá suporte ao estado atual no formato de textura selecionado. |
O Direct3D chama D3dValidateTextureStageState em resposta a uma solicitação de aplicativo por meio de uma chamada para IDirect3DDevice7::ValidateDevice. O número de passes retornados pelo driver é propagado de volta para o aplicativo, que pode decidir se ele continuará com a renderização usando o estado atual ou se ele deve alterar as operações de mesclagem para renderizar mais rapidamente ou renderizar. Não há limites para o número de passes que um driver pode retornar.
Um driver que retorna mais de uma passagem é responsável por executar corretamente as passagens em todos os dados primitivos e de estado durante a renderização.
Solicitações que provavelmente falharão em D3dValidateTextureStageState:
O uso de valores iterados difusos como ARGs ou a operação BLENDDIFFUSE tem pouco suporte no hardware atual. Muitas partes só podem introduzir dados de cor iterados no último estágio de operação de textura.
Tentando especificar a textura para cada estágio como seu arg1 em preferência para arg2.
Tentando usar valores difusos ou escalares em estágios arbitrários de mesclagem multitextura. Para muitos cartões, esses valores só podem ser usados no estado de mesclagem de textura final; para outros, somente no primeiro estágio.
Tentar fazer mais na primeira textura do que apenas replicar alfa em canais de cores ou inverter a entrada. Para muitos cartões, as unidades de mesclagem associadas à primeira textura são incapazes de lidar com operações mais complexas do que essas. Os exemplos abaixo tentam usar apenas a unidade de mesclagem da segunda textura, se for possível fazer isso. Presume-se que a primeira unidade esteja em seu estado padrão nos exemplos.
dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE ); * dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
Executar operações para o alfa de saída que são mais complexas do que ou substancialmente diferentes das operações especificadas para os canais de cores é menos provável que haja suporte.
Tentar usar D3DTA_TFACTOR e D3DTA_DIFFUSE simultaneamente. Alguns hardwares não dão suporte a isso.
Tentando o uso simultâneo de várias texturas e filtragem trilinear mapeada por MIP. Muitos cartões não dão suporte a essas operações ao mesmo tempo. Se a filtragem trilinear tiver sido solicitada para uma textura envolvida em operações de multitextura e falhar na validação, desative o trilinear e tente novamente. Nesse caso, talvez seja melhor fazer a renderização multipasso.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | d3dhal.h (inclua D3dhal.h) |