switch (sm4 – asm)
Überträgt das Steuerelement abhängig vom Wert eines Selektors an einen anderen Anweisungsblock innerhalb des Schaltertexts.
src0.select_component wechseln |
---|
Element | BESCHREIBUNG |
---|---|
src0 |
[in] Der Selektor für die switch-Anweisung. |
Hinweise
EinSwitch-Endswitch-Konstrukt/ verhält sich genau wie ein Switchkonstrukt in der Sprache C, mit der folgenden Ausnahme: Für D3D11-Großfall-Standardanweisungen/, die auf den nächsten Groß-/Kleinschreibungsstandard/ ohne Unterbrechung fallen, kann kein Code enthalten. Es ist zulässig, dass mehrere Groß- und Kleinschreibungsanweisungen , einschließlich standard, sequenziell angezeigt werden und denselben Codeblock gemeinsam nutzen.
Die Bedingung muss eine 32-Bit-Registerkomponente oder eine sofortige Menge sein. Der Gleichheitsvergleich ist bitweise (ganzzahlig).
Wie bei jeder Shader-Anweisung im D3D11 kann die Hardware das Switchkonstrukt direkt implementieren oder nicht.
Switch-Anweisungen können geschachtelt werden. Jeder Schalterblock zählt als 1 Ebene gegenüber dem Schachtelungstiefenlimit der Flusssteuerung von 64 pro Unterroutine und Main, unabhängig von der Anzahl der Fallanweisungen . Der HLSL-Compiler generiert keine Unterroutinen, die diesen Grenzwert überschreiten. Das Verhalten von Ablaufanweisungen, die über 64 Ebenen tief pro Unterroutine hinausgehen, ist nicht definiert.
Das folgende Beispiel zeigt, wie Sie diese Anweisung verwenden.
...
switch r0.x
default: // falling through
case 3
switch r1.x
case 4
...
break
case 5
...
break
endswitch
break
case 0
break
endswitch
Diese Anweisung gilt für die folgenden Shaderphasen:
Vertexshader | Geometrie-Shader | Pixelshader |
---|---|---|
x | x | x |
Minimales Shadermodell
Diese Funktion wird in den folgenden Shadermodellen unterstützt.
Shadermodell | Unterstützt |
---|---|
Shadermodell 5 | ja |
Shadermodell 4.1 | ja |
Shadermodell 4 | ja |
Shadermodell 3 (DirectX HLSL) | Nein |
Shadermodell 2 (DirectX HLSL) | Nein |
Shadermodell 1 (DirectX HLSL) | Nein |