Compartir a través de


LPD3DHAL_VALIDATETEXTURESTAGESTATECB función de devolución de llamada (d3dhal.h)

La función D3dValidateTextureStageState devuelve el número de pasos en los que el hardware puede realizar las operaciones de mezcla especificadas en el estado actual.

Sintaxis

LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;

DWORD Lpd3dhalValidatetexturestagestatecb(
  LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}

Parámetros

unnamedParam1

pvtssd [in]

Apunta a una estructura de D3DHAL_VALIDATETEXTURESTAGESTATEDATA que contiene la información necesaria para que el controlador determine y devuelva el número de pases necesarios para realizar las operaciones de mezcla.

Valor devuelto

D3dValidateTextureStageState devuelve uno de los siguientes códigos de devolución de llamada:

Comentarios

Los controladores de Microsoft Direct3D que admiten texturing deben implementar D3dValidateTextureStageState.

La implementación del controlador de esta función debe evaluar el estado de textura actual para todas las fases de textura asociadas al contexto. Si el hardware del controlador puede realizar las operaciones de mezcla especificadas, el controlador debe devolver el número de pases en los datos de estado que requiere su hardware. Si el hardware no puede realizar las operaciones de mezcla especificadas, el controlador debe devolver uno de los siguientes códigos de error en el miembro ddrval de la estructura de D3DHAL_VALIDATETEXTURESTAGESTATEDATA en pvtssd:

Código de error Significado
D3DERR_CONFLICTINGTEXTUREFILTER El hardware no puede realizar el filtrado trilineal y el multitexturing al mismo tiempo.
D3DERR_TOOMANYOPERATIONS El hardware no puede controlar el número especificado de operaciones.
D3DERR_UNSUPPORTEDALPHAARG El hardware no admite un argumento alfa especificado.
D3DERR_UNSUPPORTEDALPHAOPERATION El hardware no admite una operación alfa especificada.
D3DERR_UNSUPPORTEDCOLORARG El hardware no admite un argumento de color especificado.
D3DERR_UNSUPPORTEDCOLOROPERATION El hardware no admite una operación de color especificada.
D3DERR_UNSUPPORTEDFACTORVALUE El hardware no admite un D3DTA_TFACTOR mayor que 1.0.
D3DERR_WRONGTEXTUREFORMAT El hardware no admite el estado actual en el formato de textura seleccionado.

 

Direct3D llama a D3dValidateTextureStageState en respuesta a una solicitud de aplicación a través de una llamada a IDirect3DDevice7::ValidateDevice. El número de pases devueltos por el controlador se propaga de nuevo a la aplicación, lo que puede decidir si continuará con la representación con el estado actual o si debe cambiar las operaciones de mezcla para que se representen más rápido o para representarse en absoluto. No hay límites en el número de pases que un controlador puede devolver.

Un controlador que devuelve más de un paso es responsable de ejecutar correctamente los pasos en todos los datos primitivos y de estado al representar.

Solicitudes que probablemente produzcan un error D3dValidateTextureStageState:

  • El uso de valores iterados difusos como ARG o la operación BLENDDIFFUSE se admite dispersamente en el hardware actual. Muchas partes solo pueden introducir datos de color iterados en la última fase de operación de textura.

  • Intentando especificar la textura para cada fase como su arg1 en preferencia a arg2.

  • Intentando usar valores difusos o escalares en fases arbitrarias de fusión multitexture. Para muchas tarjetas, estos valores solo se pueden usar en el estado final de combinación de texturas; para otros, solo en la primera fase.

  • Intentando hacer más en la primera textura que simplemente replicar alfa en canales de color o invertir la entrada. Para muchas tarjetas, las unidades de mezcla asociadas a la primera textura no pueden controlar las operaciones más complejas que estas. Los ejemplos siguientes intentan usar solo la unidad de mezcla de la segunda textura, si es posible hacerlo. Se supone que la primera unidad está en su estado predeterminado en los ejemplos.

    dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE );   *
    dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
    
  • Es menos probable que se admita la realización de operaciones para el alfa de salida que, o sustancialmente diferente, las operaciones especificadas para los canales de color son menos compatibles.

  • Intentando usar D3DTA_TFACTOR y D3DTA_DIFFUSE simultáneamente. Algunos hardware no admiten esto.

  • Intentando el uso simultáneo de varias texturas y filtrado trilineal asignado de MIP. Muchas tarjetas no admiten estas operaciones al mismo tiempo. Si se ha solicitado el filtrado trilineal para una textura implicada en las operaciones multitexture y se produce un error en la validación, desactive trilinear e inténtelo de nuevo. En este caso, puede ser mejor realizar la representación multipaso en su lugar.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado d3dhal.h (incluya D3dhal.h)

Consulte también

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2