Partilhar via


LPD3DHAL_VALIDATETEXTURESTAGESTATECB função de retorno de chamada (d3dhal.h)

A função D3dValidateTextureStageState retorna o número de passes 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 passes necessários para executar as operações de mesclagem.

Valor de retorno

D3dValidateTextureStageState retorna um dos seguintes códigos de retorno de chamada:

Observações

Os drivers do Microsoft Direct3D que dão suporte à texturização 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 passagens 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 ddrval membro da estrutura D3DHAL_VALIDATETEXTURESTAGESTATEDATA em pvtssd:

Código de 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 passagens que um driver pode retornar.

Um driver que retorna mais de uma passagem é responsável por executar corretamente todos os dados primitivos e de estado durante a renderização.

Solicitações que provavelmente falharão D3dValidateTextureStageState:

  • O uso de valores iterados difusos como ARGs ou a operação BLENDDIFFUSE tem suporte esparso no hardware atual. Muitas partes só podem introduzir dados de cor iterados no estágio da última 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 de multitexturas. Para muitos cartões, esses valores só podem ser usados no estado final de mesclagem de textura; para outros, somente no primeiro estágio.

  • Tentando fazer mais na primeira textura do que apenas replicar alfa para 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 ou substancialmente diferentes das operações especificadas para os canais de cores é menos provável que tenham suporte.

  • Tentando 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
da Plataforma de Destino Área de trabalho
cabeçalho d3dhal.h (inclua D3dhal.h)

Consulte também

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2