switch-Anweisung
Übertragen Sie das Steuerelement in einen anderen Anweisungsblock innerhalb des Schaltertexts, abhängig vom Wert eines Selektors.
[Attribut] switch( Selector ) { case 0 : { StatementBlock; } break; case 1 : { StatementBlock; } break; case n : { StatementBlock; } break; default : { StatementBlock; } break; default : { StatementBlock; } break;
Parameter
-
Attribut
-
Ein optionaler Parameter, der steuert, wie die Anweisung kompiliert wird. Wenn kein Attribut angegeben wird, kann der Compiler einen Hardwareschalter verwenden oder eine Reihe von if-Anweisungen ausgeben.
attribute BESCHREIBUNG Vereinfachen Kompilieren Sie die -Anweisung als Reihe von if-Anweisungen , die jeweils mit dem flatten-Attribut versehen sind. Verzweigung Kompilieren Sie die -Anweisung als Reihe von if-Anweisungen , die jeweils mit dem Branch-Attribut versehen sind. Hinweis: Wenn Sie shader Model 2.x oder Shader Model 3.0 verwenden, verbrauchen Sie bei jeder Verwendung der dynamischen Verzweigung Ressourcen. Wenn Sie dynamische Verzweigungen also übermäßig verwenden, wenn Sie diese Profile als Ziel verwenden, können Kompilierungsfehler auftreten. Forcecase Erzwingen Sie eine Switch-Anweisung in der Hardware. Hinweis: Erfordert Hardware der Featureebene 10_0 oder höher. Aufruf Die Körper der einzelnen Fälle im Switch werden in Hardware-Unterroutinen verschoben, und der Switch besteht aus einer Reihe von Unterroutinenaufrufen. Hinweis: Erfordert Hardware der Featureebene 10_0 oder höher. -
Selector
-
Eine Variable. Die Fallanweisungen in den geschweiften Klammern überprüfen jeweils diese Variable, um festzustellen, ob der SwitchValue mit dem jeweiligen CaseValue übereinstimmt.
-
StatementBlock
-
Mindestens eine Anweisung.
Bemerkungen
[branch] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
Entspricht folgendem:
[branch] if( a == 2 )
return 3;
else if( a == 1 )
return 1;
else if( a == 0 )
return 0;
else
return 6;
Hier finden Sie Beispielverwendungen von Forcecase- und Aufrufflusssteuerungsattributen:
[forcecase] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
[call] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
Anforderungen
Anforderung | Wert |
---|---|
Header |
|