Método IDirect3DDevice9::ValidateDevice (d3d9helper.h)
Relata a capacidade do dispositivo de renderizar as operações e argumentos atuais de mesclagem de textura em uma única passagem.
Sintaxe
HRESULT ValidateDevice(
[out, retval] DWORD *pNumPasses
);
Parâmetros
[out, retval] pNumPasses
Tipo: DWORD*
Ponteiro para um valor DWORD a ser preenchido com o número de passes de renderização necessários para concluir o efeito desejado por meio da renderização multipasso.
Retornar valor
Tipo: HRESULT
Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser um dos seguintes: D3DERR_CONFLICTINGRENDERSTATE, D3DERR_CONFLICTINGTEXTUREFILTER, D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_TOOMANYOPERATIONS, D3DERR_UNSUPPORTEDALPHAARG, D3DERR_UNSUPPORTEDALPHAOPERATION, D3DERR_UNSUPPORTEDCOLORARG, D3DERR_UNSUPPORTEDCOLOROPERATION, D3DERR_UNSUPPORTEDFACTORVALUE, D3DERR_UNSUPPORTEDTEXTUREFILTER, D3DERR_WRONGTEXTUREFORMAT,.
Comentários
O método IDirect3DDevice9::ValidateDevice deve ser usado para validar cenários somente quando outras funcionalidades forem deficientes. Por exemplo, em um cenário de texturização em vários estágios, você pode consultar os membros MaxTextureBlendStages e MaxSimultaneousTextures de uma estrutura de D3DCAPS9 para determinar se a texutura de vários estágios é possível no dispositivo.
O hardware atual não implementa necessariamente todas as combinações possíveis de operações e argumentos. Você pode determinar se uma operação de mesclagem específica pode ser executada com determinados argumentos definindo a operação de combinação desejada e chamando o método IDirect3DDevice9::ValidateDevice .
O método IDirect3DDevice9::ValidateDevice usa os estados de renderização, texturas e estados de estágio de textura atuais para executar a validação no momento da chamada. As alterações nesses fatores após a chamada invalidam o resultado anterior e o método deve ser chamado novamente antes de renderizar uma cena.
Para obter o melhor desempenho, chame IDirect3DDevice9::ValidateDevice no momento da inicialização; não o use em um loop de renderização.
O uso de valores iterados difusos, seja como um argumento ou como uma operação (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) raramente tem suporte no hardware atual. A maioria dos hardwares pode introduzir dados de cor iterados somente no estágio da última operação de textura.
Tente especificar a textura (D3DTA_TEXTURE) para cada estágio como o primeiro argumento, em vez do segundo argumento.
Muitos cartões não dão suporte ao uso de valores difusos ou escalares em estágios arbitrários de textura. Geralmente, elas estão disponíveis apenas no primeiro ou último estágio de mesclagem de textura.
Muitos cartões não têm uma unidade de mesclagem associada à primeira textura capaz de mais do que replicar alfa em canais de cores ou inverter a entrada. Portanto, seu aplicativo pode precisar usar apenas o segundo estágio de textura, se possível. Nesse hardware, presume-se que a primeira unidade esteja em seu estado padrão, que tem o primeiro argumento de cor definido como D3DTA_TEXTURE com a operação de D3DTOP_SELECTARG1.
As operações no alfa de saída que são mais complexas ou substancialmente diferentes das operações de cor são menos propensas a serem suportadas.
Alguns hardwares não dão suporte ao uso simultâneo de D3DTA_TFACTOR e D3DTA_DIFFUSE.
Muitos cartões não dão suporte ao uso simultâneo de várias texturas e filtragem trilinear mipmapped. Se a filtragem trilinear tiver sido solicitada para uma textura envolvida em operações de mesclagem multitextura e a validação falhar, desative a filtragem trilinear e revalidar. Nesse caso, talvez você queira executar a renderização multipasso.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d9helper.h (inclua D3D9.h) |
Biblioteca | D3D9.lib |