Effektgruppensyntax (Direct3D 11)
Eine Effektgruppe wird mit der in diesem Abschnitt beschriebenen Syntax deklariert.
fxgroup GroupName [ <Annotations > ]
{
TechniqueVersion TechniqueName [ <Annotations > ]
{
...
}
TechniqueVersion TechniqueName [ <Annotations > ]
{
...
}
}
Parameter
Element | BESCHREIBUNG |
---|---|
fxgroup |
equired Schlüsselwort (keyword). |
Groupname |
Erforderlich. Eine ASCII-Zeichenfolge, die den Namen der Effektgruppe eindeutig identifiziert. Im Gegensatz zu Techniken müssen Gruppen Namen haben, um sicherzustellen, dass Techniken über einen eindeutigen Bezeichner verfügen (siehe Abschnitt "Gruppen und Techniken" weiter unten). |
< Anmerkungen > |
[in] Optional. Mindestens ein Teil der vom Benutzer bereitgestellten Informationen (Metadaten), die vom Effektsystem ignoriert werden. Informationen zur Syntax finden Sie unter Anmerkungssyntax (Direct3D 11). |
TechniqueVersion |
Entweder "technique10" oder "technique11". Techniken, die neue Funktionen für Direct3D 11 (5_0-Shader, BindInterfaces usw.) verwenden, müssen "technique11" verwenden. |
TechniqueName |
Optional. Eine ASCII-Zeichenfolge, die den Namen der Effekttechnik eindeutig identifiziert. |
Gruppen und Techniken
Um die Kompatibilität mit fx_4_0 Effekten zu gewährleisten, sind Gruppen optional. Es gibt eine implizite GRUPPE mit dem Namen NULL, die alle globalen Techniken umgibt.
Betrachten Sie das folgende Beispiel:
technique11 GlobalTech
{
}
fxgroup Group1
{
technique11 Tech1 { ... }
technique11 Tech2 { ... }
}
fxgroup Group2
{
technique11 Tech1 { ... }
technique11 Tech2 { ... }
}
In C++ gibt es zwei Möglichkeiten, eine Technik anhand des Namens abzurufen. Die folgenden Befehle finden die offensichtlichen Techniken:
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" );
Um sicherzustellen, dass ID3DX11Effect::GetTechniqueByName ähnlich wie Effects 10 funktioniert, müssen alle definierten Gruppen einen Namen haben.