Sintassi del gruppo di effetti (Direct3D 11)
Un gruppo di effetti viene dichiarato con la sintassi descritta in questa sezione.
fxgroup GroupName [ <Annotations > ]
{
TechniqueVersion TechniqueName [ <Annotations > ]
{
...
}
TechniqueVersion TechniqueName [ <Annotations > ]
{
...
}
}
Parametri
Elemento | Descrizione |
---|---|
fxgroup |
parola chiave equired. |
Groupname |
Obbligatorio. Stringa ASCII che identifica in modo univoco il nome del gruppo di effetti. A differenza delle tecniche, i gruppi devono avere nomi per garantire che le tecniche dispongano di un identificatore univoco (vedere La sezione Gruppi e tecniche di seguito). |
< Annotazioni > |
[in] Facoltativo. Una o più informazioni fornite dall'utente (metadati) ignorate dal sistema di effetto. Per la sintassi, vedere Sintassi annotazione (Direct3D 11). |
TecnicaVersion |
"tecnica10" o "tecnica11". Le tecniche che usano funzionalità nuove per Direct3D 11 (5_0 shader, BindInterfaces e così via) devono usare "tecnica11". |
TecnicaName |
Facoltativa. Stringa ASCII che identifica in modo univoco il nome della tecnica dell'effetto. |
Gruppi e tecniche
Per mantenere la compatibilità con gli effetti fx_4_0, i gruppi sono facoltativi. Esiste un gruppo NULL implicito che circonda tutte le tecniche globali.
Prendere in considerazione gli esempi seguenti:
technique11 GlobalTech
{
}
fxgroup Group1
{
technique11 Tech1 { ... }
technique11 Tech2 { ... }
}
fxgroup Group2
{
technique11 Tech1 { ... }
technique11 Tech2 { ... }
}
In C++, una può ottenere una tecnica per nome in due modi. I comandi seguenti troveranno le tecniche ovvie:
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" );
Per assicurarsi che ID3DX11Effect::GetTechniqueByName funzioni in modo analogo a Effects 10, tutti i gruppi definiti devono avere un nome.