switch (sm4 - asm)
Transfiere el control a un bloque de instrucciones diferente dentro del cuerpo del conmutador en función del valor de un selector.
switch src0.select_component |
---|
Elemento | Descripción |
---|---|
src0 |
[in] Selector de la instrucción switch. |
Comentarios
Una construcción switch/endswitch se comporta exactamente como una construcción switch en el lenguaje C, con la siguiente excepción: para las instruccionespredeterminadas de mayúsculas/ y minúsculas D3D11 que pasan al siguiente caso/predeterminado sin una interrupción no pueden tener ningún código en ellos. Se permite que varias instrucciones case , incluido el valor predeterminado, aparezcan secuencialmente y compartan el mismo bloque de código.
La condición debe ser un componente de registro de 32 bits o una cantidad inmediata. La comparación de igualdad es bit a bit (entero).
Al igual que con cualquier instrucción de Sombreador en D3D11, el hardware puede o no implementar la construcción del conmutador directamente.
Las instrucciones switch se pueden anidar. Cada bloque switch cuenta como 1 nivel con respecto al límite de profundidad de anidamiento del control de flujo de 64 por subrutina y main, independientemente del número de instrucciones case . El compilador HLSL no generará subrutinas que superen este límite. El comportamiento de las instrucciones de flujo de control más allá de 64 niveles de profundidad por subrutina no está definido.
En el ejemplo siguiente se muestra cómo usar esta instrucción.
...
switch r0.x
default: // falling through
case 3
switch r1.x
case 4
...
break
case 5
...
break
endswitch
break
case 0
break
endswitch
Esta instrucción se aplica a las siguientes fases del sombreador:
Sombreador de vértices | Sombreador de geometría | Sombreador de píxeles |
---|---|---|
x | x | x |
Modelo de sombreador mínimo
Esta función se admite en los siguientes modelos de sombreador.
Modelo de sombreador | Compatible |
---|---|
Modelo de sombreador 5 | sí |
Modelo de sombreador 4.1 | sí |
Modelo de sombreador 4 | sí |
Modelo de sombreador 3 (DirectX HLSL) | No |
Modelo de sombreador 2 (DirectX HLSL) | No |
Modelo de sombreador 1 (DirectX HLSL) | No |