Freigeben über


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

Shadermodell 4-Assembly (DirectX HLSL)