Méthode IDirect3DDevice9 ::ValidateDevice (d3d9.h)
Signale la capacité de l’appareil à restituer les opérations de fusion de textures et les arguments actuels en une seule passe.
Syntaxe
HRESULT ValidateDevice(
[out, retval] DWORD *pNumPasses
);
Paramètres
[out, retval] pNumPasses
Type : DWORD*
Pointeur vers une valeur DWORD à remplir avec le nombre de passes de rendu nécessaires pour effectuer l’effet souhaité via le rendu multipass.
Valeur retournée
Type : HRESULT
Si la méthode réussit, la valeur de retour est D3D_OK. Si la méthode échoue, la valeur de retour peut être l’une des suivantes : D3DERR_CONFLICTINGRENDERSTATE, D3DERR_CONFLICTINGTEXTUREFILTER, D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_TOOMANYOPERATIONS, D3DERR_UNSUPPORTEDALPHAARG, D3DERR_UNSUPPORTEDALPHAOPERATION, D3DERR_UNSUPPORTEDCOLORARG, D3DERR_UNSUPPORTEDCOLOROPERATION, D3DERR_UNSUPPORTEDFACTORVALUE, D3DERR_UNSUPPORTEDTEXTUREFILTER, D3DERR_WRONGTEXTUREFORMAT,.
Remarques
La méthode IDirect3DDevice9 ::ValidateDevice doit être utilisée pour valider des scénarios uniquement lorsque d’autres fonctionnalités sont insuffisantes. Par exemple, dans un scénario de texturing en plusieurs étapes, vous pouvez interroger les membres MaxTextureBlendStages et MaxSimultaneousTextures d’une structure D3DCAPS9 pour déterminer si la texturation en plusieurs étapes est possible sur l’appareil.
Le matériel actuel n’implémente pas nécessairement toutes les combinaisons possibles d’opérations et d’arguments. Vous pouvez déterminer si une opération de fusion particulière peut être effectuée avec des arguments donnés en définissant l’opération de fusion souhaitée, puis en appelant la méthode IDirect3DDevice9 ::ValidateDevice .
La méthode IDirect3DDevice9 ::ValidateDevice utilise les états de rendu, les textures et les états de l’étape de texture actuels pour effectuer la validation au moment de l’appel. Les modifications apportées à ces facteurs après l’appel invalident le résultat précédent, et la méthode doit être appelée à nouveau avant le rendu d’une scène.
Pour de meilleures performances, appelez IDirect3DDevice9 ::ValidateDevice au moment de l’initialisation ; ne l’utilisez pas dans une boucle de rendu.
L’utilisation de valeurs itérées diffuses, en tant qu’argument ou en tant qu’opération (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) est rarement prise en charge sur le matériel actuel. La plupart du matériel peut introduire des données de couleur itérées uniquement à la dernière étape de l’opération de texture.
Essayez de spécifier la texture (D3DTA_TEXTURE) pour chaque étape comme premier argument, plutôt que comme deuxième argument.
De nombreuses cartes ne prennent pas en charge l’utilisation de valeurs diffuses ou scalaires à des étapes de texture arbitraires. Souvent, ceux-ci sont disponibles uniquement lors de la première ou de la dernière étape de fusion de textures.
De nombreuses cartes n’ont pas d’unité de fusion associée à la première texture capable d’aller plus loin que la réplication de l’alpha sur les canaux de couleur ou l’inversion de l’entrée. Par conséquent, votre application peut avoir besoin d’utiliser uniquement la deuxième étape de texture, si possible. Sur ce matériel, la première unité est supposée être dans son état par défaut, avec le premier argument de couleur défini sur D3DTA_TEXTURE avec l’opération D3DTOP_SELECTARG1.
Les opérations sur l’alpha de sortie qui sont plus complexes ou sensiblement différentes des opérations de couleur sont moins susceptibles d’être prises en charge.
Certains matériels ne prennent pas en charge l’utilisation simultanée de D3DTA_TFACTOR et de D3DTA_DIFFUSE.
De nombreuses cartes ne prennent pas en charge l’utilisation simultanée de plusieurs textures et le filtrage trilinéaire mipmappé. Si le filtrage trilinéaire a été demandé pour une texture impliquée dans des opérations de fusion multitexte et que la validation échoue, désactivez le filtrage trilinéaire et revalidez. Dans ce cas, vous souhaiterez peut-être effectuer un rendu multipass à la place.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d9.h (inclure D3D9.h) |
Bibliothèque | D3D9.lib |