Syntaxe des groupes 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é equises.
GroupName
Obligatoire. Chaîne ASCII qui identifie de façon 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 de < >
[]facultatif. Un ou plusieurs éléments d’informations fournies par l’utilisateur (métadonnées) qui sont ignorés par le système d’effet. Pour obtenir la syntaxe, consultez syntaxe d’annotation (Direct3D 11).
TechniqueVersion
« Technique10 » ou « technique11 ». Les techniques qui utilisent les nouvelles fonctionnalités de Direct3D 11 (5 _ nuanceurs, BindInterfaces, etc.) doivent utiliser « technique11 ».
TechniqueName
Facultatif. Chaîne ASCII qui identifie de façon unique le nom de la technique d’effet.

Groupes et techniques

Pour assurer la compatibilité avec les _ effets FX 4 _ 0, les groupes sont facultatifs. Il existe un groupe implicite nommé NULL entourant 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 nom de deux manières. Les commandes suivantes permettent de trouver 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 vous assurer que ID3DX11Effect :: GetTechniqueByName fonctionne de la même façon que les effets 10, tous les groupes définis doivent avoir un nom.

Format d’effet

Syntaxe d’effet technique (Direct3D 11)