Freigeben über


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.

Effektformat

Effekttechniksyntax (Direct3D 11)