switch (sm4 - asm)

Trasferisce il controllo a un blocco di istruzioni diverso all'interno del corpo del commutatore a seconda del valore di un selettore.

switch src0.select_component
Elemento Descrizione
src0
[in] Selettore per l'istruzione switch.

Commenti

Un costruttoendwitchswitch/ si comporta esattamente come costrutto di commutatori nel linguaggio C, con l'eccezione seguente: per le istruzionipredefinite del caso/ D3D11 che rientrano nel caso/ successivopredefinite senza un'interruzione non possono avere codice in essi. È consentito che più istruzioni case , tra cui impostazione predefinita, vengano visualizzate in sequenza, condividendo lo stesso blocco di codice.

La condizione deve essere un componente di registrazione a 32 bit o una quantità immediata. Il confronto di uguaglianza è bit per bit (integer).

Come per qualsiasi istruzione Shader nella D3D11, l'hardware può o non implementare direttamente il costrutto di commutatore .

Le istruzioni switch possono essere annidate. Ogni blocco di commutatori conta come 1 livello rispetto al limite di profondità annidamento del flusso pari a 64 per subroutine e main, indipendentemente dal numero di istruzioni case . Il compilatore HLSL non genererà subroutine che superano questo limite. Il comportamento delle istruzioni del flusso di controllo oltre i 64 livelli profondi per subroutine non è definito.

Nell'esempio seguente viene illustrato come usare questa istruzione.

                ...
                switch r0.x
                default: // falling through
                case 3
                    switch r1.x
                    case 4
                        ...
                        break
                    case 5
                        ...
                        break
                    endswitch
                    break
                case 0
                    break
                endswitch

Questa istruzione si applica alle fasi dello shader seguenti:

Vertex shader Geometry shader Pixel shader
x x x

Modello di shader minimo

Questa funzione è supportata nei modelli shader seguenti.

Modello di shader Supportato
Modello shader 5
Modello shader 4.1
Modello shader 4
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Shader Model 4 Assembly (DirectX HLSL)