LPD3DHAL_VALIDATETEXTURESTAGESTATECB fonction de rappel (d3dhal.h)
La fonction D3dValidateTextureStageState retourne le nombre de passes où le matériel peut effectuer les opérations de fusion spécifiées dans l’état actuel.
Syntaxe
LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;
DWORD Lpd3dhalValidatetexturestagestatecb(
LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}
Paramètres
unnamedParam1
pvtssd [in]
Pointe vers une structure D3DHAL_VALIDATETEXTURESTAGESTATEDATA qui contient les informations requises pour que le pilote détermine et retourne le nombre de passes requises pour effectuer les opérations de fusion.
Valeur retournée
D3dValidateTextureStageState retourne l’un des codes de rappel suivants :
Remarques
Les pilotes Microsoft Direct3D qui prennent en charge la texturation doivent implémenter D3dValidateTextureStageState.
L’implémentation de cette fonction par le pilote doit évaluer l’état de texture actuel pour toutes les étapes de texture associées au contexte. Si le matériel du pilote peut effectuer les opérations de fusion spécifiées, le pilote doit retourner le nombre de passes sur les données d’état requises par son matériel. Si le matériel ne peut pas effectuer les opérations de fusion spécifiées, le pilote doit retourner l’un des codes d’erreur suivants dans le membre ddrval de la structure D3DHAL_VALIDATETEXTURESTAGESTATEDATA à pvtssd :
Code d'erreur | Signification |
---|---|
D3DERR_CONFLICTINGTEXTUREFILTER | Le matériel ne peut pas effectuer à la fois le filtrage triligne et le multitexturing en même temps. |
D3DERR_TOOMANYOPERATIONS | Le matériel ne peut pas gérer le nombre spécifié d’opérations. |
D3DERR_UNSUPPORTEDALPHAARG | Le matériel ne prend pas en charge un argument alpha spécifié. |
D3DERR_UNSUPPORTEDALPHAOPERATION | Le matériel ne prend pas en charge une opération alpha spécifiée. |
D3DERR_UNSUPPORTEDCOLORARG | Le matériel ne prend pas en charge un argument de couleur spécifié. |
D3DERR_UNSUPPORTEDCOLOROPERATION | Le matériel ne prend pas en charge une opération de couleur spécifiée. |
D3DERR_UNSUPPORTEDFACTORVALUE | Le matériel ne prend pas en charge une D3DTA_TFACTOR supérieure à 1.0. |
D3DERR_WRONGTEXTUREFORMAT | Le matériel ne prend pas en charge l’état actuel dans le format de texture sélectionné. |
Direct3D appelle D3dValidateTextureStageState en réponse à une demande d’application via un appel à IDirect3DDevice7 ::ValidateDevice. Le nombre de passes retournées par le pilote est propagé vers l’application, qui peut ensuite décider si elle va continuer le rendu à l’aide de l’état actuel ou si elle doit modifier les opérations de fusion pour un rendu plus rapide ou pour effectuer un rendu du tout. Il n’existe aucune limite au nombre de passes qu’un conducteur peut retourner.
Un pilote qui retourne plusieurs passes est responsable de l’exécution correcte des passes sur toutes les données d’état et primitives lors du rendu.
Demandes susceptibles d’échouer dans D3dValidateTextureStageState :
L’utilisation de valeurs itérées diffuses comme ARG, ou l’opération BLENDDIFFUSE est partiellement prise en charge sur le matériel actuel. De nombreuses parties peuvent introduire uniquement des données de couleur itérées à la dernière étape de l’opération de texture.
Essayez de spécifier la texture de chaque étape comme arg1 de préférence à arg2.
Tentative d’utilisation de valeurs diffuses ou scalaires à des étapes de fusion multitexture arbitraires. Pour de nombreuses cartes, ces valeurs ne peuvent être utilisées qu’à l’état de fusion de texture final ; pour d’autres, seulement à la première étape.
Essayez d’en faire plus dans la première texture que simplement répliquer alpha sur les canaux de couleur ou inverser l’entrée. Pour de nombreuses cartes, les unités de fusion associées à la première texture sont incapables de gérer des opérations plus complexes que celles-ci. Les exemples ci-dessous essaient d’utiliser uniquement l’unité de fusion de la deuxième texture, si cela est possible. La première unité est supposée être dans son état par défaut dans les exemples.
dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE ); * dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
L’exécution d’opérations pour l’alpha de sortie qui sont plus complexes ou sensiblement différentes des opérations spécifiées pour les canaux de couleur est moins susceptible d’être prise en charge.
Tentative d’utilisation simultanée de D3DTA_TFACTOR et de D3DTA_DIFFUSE. Certains matériels ne le prennent pas en charge.
Tentative d’utilisation simultanée de plusieurs textures et filtrage triligne mappé MIP. De nombreuses cartes ne prennent pas en charge ces opérations en même temps. Si le filtrage triligne a été demandé pour une texture impliquée dans des opérations de multitexture et qu’il échoue à la validation, désactivez triligneur et réessayez. Dans ce cas, il peut être préférable d’effectuer un rendu multipass à la place.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dhal.h (inclure D3dhal.h) |