Partager via


Syntaxe du groupe d’effets (Direct3D 11)

Un groupe d’effets est déclaré avec la syntaxe décrite dans cette section.

fxgroup GroupName  [ <Annotations > ]
{
    TechniqueVersion TechniqueName [ <Annotations > ] 
    { 
       ...
    } 
    TechniqueVersion TechniqueName [ <Annotations > ] 
    { 
       ...
    } 
}



Paramètres

Élément Description
fxgroup
mot clé équidés.
Groupname
Obligatoire. Chaîne ASCII qui identifie de manière unique le nom du groupe d’effets. Contrairement aux techniques, les groupes doivent avoir des noms pour s’assurer que les techniques ont un identificateur unique (voir la section Groupes et techniques ci-dessous).
< Annotations >
[in] Facultatif. Une ou plusieurs informations fournies par l’utilisateur (métadonnées) qui sont ignorées par le système d’effet. Pour obtenir la syntaxe, consultez Syntaxe d’annotation (Direct3D 11).
TechniqueVersion
« technique10 » ou « technique11 ». Les techniques qui utilisent des fonctionnalités nouvelles de Direct3D 11 (nuanceurs 5_0, BindInterfaces, etc.) doivent utiliser « technique11 ».
TechniqueName
Optionnel. Chaîne ASCII qui identifie de manière unique le nom de la technique d’effet.

Groupes et techniques

Afin de maintenir la compatibilité avec les effets fx_4_0, les groupes sont facultatifs. Il existe un groupe null implicite qui entoure toutes les techniques globales.

Prenons l’exemple suivant :

technique11 GlobalTech
{
}
fxgroup Group1
{
     technique11 Tech1 { ... }
     technique11 Tech2 { ... }
}
fxgroup Group2
{
     technique11 Tech1 { ... }
     technique11 Tech2 { ... }
}

En C++, il est possible d’obtenir une technique par son nom de deux manières. Les commandes suivantes trouveront les techniques évidentes :

pEffect->GetTechniqueByName( "GlobalTech" );
pEffect->GetTechniqueByName( "|GlobalTech" );
pEffect->GetTechniqueByName( "Group1|Tech1" );
pEffect->GetTechniqueByName( "Group1|Tech2" );
pEffect->GetTechniqueByName( "Group2|Tech1" );
pEffect->GetTechniqueByName( "Group2|Tech2" );
pEffect->GetGroupByName("Group1")->GetTechniqueByName( "Tech1" );
pEffect->GetGroupByName("Group1")->GetTechniqueByName( "Tech2" );
pEffect->GetGroupByName("Group2")->GetTechniqueByName( "Tech1" );
pEffect->GetGroupByName("Group2")->GetTechniqueByName( "Tech2" );

Pour garantir que ID3DX11Effect::GetTechniqueByName fonctionne de la même façon que Effects 10, tous les groupes définis doivent avoir un nom.

Format d’effet

Syntaxe de la technique d’effet (Direct3D 11)