switch (sm4 - asm)

Überträgt die Steuerung abhängig vom Wert eines Selektors an einen anderen Anweisungsblock innerhalb des Switch-Textkörpers.

switch src0.selected-Komponente _
Element Beschreibung
src0
[in ] Der Selektor für die switch-Anweisung.

Hinweise

Ein Switch / endswitch-Konstrukt verhält sich genau wie ein Switchkonstrukt in der Programmiersprache C, mit der folgenden Ausnahme: Für D3D11-Fall-Standard-Anweisungen, die auf den Standardwert des nächsten Falls ohne Unterbrechung fallen, kann kein Code / / enthalten sein. Es ist zulässig, dass mehrere Case-Anweisungen, einschließlich standard , sequenziell angezeigt werden und denselben Codeblock gemeinsam nutzen.

Die Bedingung muss eine 32-Bit-Registerkomponente oder eine unmittelbare Menge sein. Der Gleichheitsvergleich ist bitweise (ganze Zahl).

Wie bei jeder Shader-Anweisung in D3D11 kann hardware das Switchkonstrukt direkt implementieren.

Switch-Anweisungen können geschachtelt werden. Jeder Switchblock zählt als 1 Ebene für die Schachtelungstiefe der Flusssteuerung von 64 pro Unterroutine und Hauptebene, unabhängig von der Anzahl der Case-Anweisungen. Der HLSL-Compiler generiert keine Unterroutinen, die diesen Grenzwert überschreiten. Das Verhalten von Ablaufsteuerungsanweisungen über 64 Ebenen hinaus pro Unterroutine ist nicht definiert.

Im folgenden Beispiel wird die Verwendung dieser Anweisung veranschaulicht.

                ...
                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 Shaderstufen:

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

Shader Model 4-Assembly (DirectX HLSL)