Interfaces spécialisées (Direct3D 11)
ID3DX11EffectVariable dispose d’un certain nombre de méthodes pour transformer l’interface en le type particulier d’interface dont vous avez besoin. Les méthodes sont de la forme AsType et incluent une méthode pour chaque type de variable d’effet (par exemple, AsBlend, AsConstantBuffer, etc.)
Par exemple, supposons que vous avez un effet avec deux variables globales : le temps et une transformation mondiale.
float g_fTime;
float4x4 g_mWorld;
Voici un exemple qui obtient ces variables :
ID3DX11EffectVariable* g_pVariable;
ID3DX11EffectMatrixVariable* g_pmWorld;
ID3DX11EffectScalarVariable* g_pfTime;
g_pVariable = g_pEffect11->GetVariableByName("g_mWorld");
g_pmWorld = g_pVariable->AsMatrix();
g_pVariable = g_pEffect11->GetVariableByName("g_fTime");
g_pfTime = g_pVariable->AsScalar();
En spécialisant les interfaces, vous pouvez réduire le code à un seul appel.
g_pmWorld = (g_pEffect11->GetVariableByName("g_mWorld"))->AsMatrix();
g_pfTime = (g_pEffect11->GetVariableByName("g_fTime"))->AsScalar();
Les interfaces qui héritent d’ID3DX11EffectVariable ont également ces méthodes, mais elles ont été conçues pour retourner des objets non valides ; seuls les appels à partir d’ID3DX11EffectVariable retournent des objets valides. Les applications peuvent tester l’objet retourné pour voir s’il est valide en appelant ID3DX11EffectVariable::IsValid.
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour