Método IDirect3DDevice9::ValidateDevice (d3d9.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 ejecuta 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, 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 combinación 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, las texturas y los estados de fase de textura actuales para realizar la validación en el momento de la llamada. Los cambios realizados 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 una 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 fase de combinación de texturas primero o última.
Muchas tarjetas no tienen una unidad de mezcla asociada a la primera textura que es capaz de replicar alfa en canales de color o invertir la entrada. Por lo tanto, es posible que la aplicación tenga que 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 el filtrado trilineal para una textura implicada en las operaciones de fusión 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 | d3d9.h (incluya D3D9.h) |
Library | D3D9.lib |