Compartilhar via


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)

Confira também

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2