Compartir a través de


Método IDirect3DDevice9::ValidateDevice (d3d9helper.h)

Informa de la capacidad del dispositivo para representar las operaciones y argumentos actuales de combinación de texturas en un solo paso.

Sintaxis

HRESULT ValidateDevice(
  [out, retval] DWORD *pNumPasses
);

Parámetros

[out, retval] pNumPasses

Tipo: DWORD*

Puntero a un valor DWORD para rellenar con el número de pasos de representación necesarios para completar el efecto deseado a través de la representación multipaso.

Valor devuelto

Tipo: HRESULT

Si el método se realiza correctamente, el valor devuelto es D3D_OK. Si se produce un error en el método, el valor devuelto puede ser uno de los siguientes: D3DERR_CONFLICTINGRENDERSTATE, D3DERR_CONFLICTINGTEXTUREFILTER, D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_TOOMANYOPERATIONS, D3DERR_UNSUPPORTEDALPHAARG, D3DERR_UNSUPPORTEDALPHAOPERATION, D3DERR_UNSUPPORTEDCOLORARG, D3DERR_UNSUPPORTEDCOLOROPERATION, D3DERR_UNSUPPORTEDFACTORVALUE, D3DERR_UNSUPPORTEDTEXTUREFILTER, D3DERR_WRONGTEXTUREFORMAT,.

Comentarios

El método IDirect3DDevice9::ValidateDevice debe usarse para validar escenarios solo cuando otras funcionalidades son deficientes. Por ejemplo, en un escenario de texturización de varias fases, podría consultar los miembros MaxTextureBlendStages y MaxSimultaneousTextures de una estructura de D3DCAPS9 para determinar si es posible la texturización en varias fases en el dispositivo.

El hardware actual no implementa necesariamente todas las combinaciones posibles de operaciones y argumentos. Puede determinar si se puede realizar una operación de mezcla determinada con argumentos dados estableciendo la operación de fusión deseada y, a continuación, llamando al método IDirect3DDevice9::ValidateDevice .

El método IDirect3DDevice9::ValidateDevice usa los estados de representación, texturas y estados de fase de textura actuales para realizar la validación en el momento de la llamada. Los cambios en estos factores después de la llamada invalidan el resultado anterior y se debe llamar al método de nuevo antes de representar una escena.

Para obtener el mejor rendimiento, llame a IDirect3DDevice9::ValidateDevice en el momento de la inicialización; no lo use dentro de un bucle de representación.

El uso de valores iterados difusos, ya sea como argumento o como operación (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) rara vez se admite en el hardware actual. La mayoría del hardware puede introducir datos de color iterados solo en la última fase de operación de textura.

Intente especificar la textura (D3DTA_TEXTURE) para cada fase como primer argumento, en lugar del segundo argumento.

Muchas tarjetas no admiten el uso de valores difusos o escalares en fases arbitrarias de textura. A menudo, estos solo están disponibles en la primera o última fase de mezcla de texturas.

Muchas tarjetas no tienen una unidad de fusión asociada a la primera textura que es capaz de replicar más que canales alfa a color o invertir la entrada. Por lo tanto, es posible que la aplicación necesite usar solo la segunda fase de textura, si es posible. En este hardware, se supone que la primera unidad está en su estado predeterminado, que tiene el primer argumento de color establecido en D3DTA_TEXTURE con la operación D3DTOP_SELECTARG1.

Las operaciones en el alfa de salida que son más complejas o sustancialmente diferentes de las operaciones de color son menos probables que se admita.

Algunos hardware no admiten el uso simultáneo de D3DTA_TFACTOR y D3DTA_DIFFUSE.

Muchas tarjetas no admiten el uso simultáneo de varias texturas y el filtrado trilineal mipmapped. Si se ha solicitado un filtrado trilineal para una textura implicada en las operaciones de mezcla multitexture y se produce un error en la validación, desactive el filtrado trilineal y vuelva a validar. En este caso, es posible que quiera realizar la representación multipaso en su lugar.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9helper.h (incluya D3D9.h)
Library D3D9.lib

Consulte también

IDirect3DDevice9

IDirect3DDevice9::GetTextureStageState

IDirect3DDevice9::SetTextureStageState