switch (sm4 - asm)
Transfère le contrôle à un autre bloc d’instructions dans le corps du commutateur en fonction de la valeur d’un sélecteur.
switch src0.select_component |
---|
Élément | Description |
---|---|
src0 |
[in] Sélecteur de l’instruction switch. |
Remarques
/ Une constructionde commutateur de fin de commutateur se comporte exactement comme une construction de commutateur en langage C, à l’exception suivante : pour les instructions de cas/par défaut D3D11 qui passent par la casse/suivante par défaut sans arrêt ne peuvent pas contenir de code. Il est autorisé que plusieurs instructions de casse , y compris par défaut, s’affichent séquentiellement, partageant le même bloc de code.
La condition doit être un composant de registre 32 bits ou une quantité immédiate. La comparaison d’égalité est au niveau du bit (entier).
Comme pour n’importe quelle instruction nuanceur dans D3D11, le matériel peut implémenter ou non la construction du commutateur directement.
Les instructions switch peuvent être imbriquées. Chaque bloc de commutateur compte comme 1 niveau par rapport à la limite de profondeur d’imbrication du contrôle de flux de 64 par sous-routine et principal, indépendamment du nombre d’instructions casse . Le compilateur HLSL ne génère pas de sous-routines qui dépassent cette limite. Le comportement des instructions de flux de contrôle au-delà de 64 niveaux de profondeur par sous-routine n’est pas défini.
L’exemple suivant montre comment utiliser cette instruction.
...
switch r0.x
default: // falling through
case 3
switch r1.x
case 4
...
break
case 5
...
break
endswitch
break
case 0
break
endswitch
Cette instruction s’applique aux étapes de nuanceur suivantes :
Nuanceur de sommets | Nuanceur de géométrie | Nuanceur de pixels |
---|---|---|
x | x | x |
Modèle de nuanceur minimal
Cette fonction est prise en charge dans les modèles de nuanceur suivants.
Modèle de nuanceur | Pris en charge |
---|---|
Modèle de nuanceur 5 | Oui |
Modèle de nuanceur 4.1 | Oui |
Modèle de nuanceur 4 | Oui |
Nuanceur modèle 3 (DirectX HLSL) | non |
Nuanceur modèle 2 (DirectX HLSL) | Non |
Nuanceur modèle 1 (DirectX HLSL) | Non |