switch (sm4 - asm)
根据选择器的值,将控制权转移到开关正文中的不同语句块。
switch src0.select_component |
---|
项 | 说明 |
---|---|
src0 |
[in]switch 语句的选择器。 |
备注
switch/endswitch 构造的行为与 C 语言中的 switch 构造完全相同,但以下例外情况如下:对于 D3D11 case/默认语句,如果默认语句不/带中断,则不会包含任何代码。 允许多个 case 语句(包括 默认值)按顺序显示,共享相同的代码块。
条件必须是 32 位寄存器组件或即时数量。 相等比较是按位 (整数) 。
与 D3D11 中的任何着色器指令一样,硬件可能直接实现开关构造,也可能不实现 开关 构造。
Switch 语句可以嵌套。 每个 开关 块根据每个子例程和 main 的流控制嵌套深度限制(64)计为 1 级,与 事例 语句的数量无关。 HLSL 编译器不会生成超过此限制的子例程。 未定义每个子例程超过 64 个级别的控制流指令的行为。
以下示例演示如何使用此命令。
...
switch r0.x
default: // falling through
case 3
switch r1.x
case 4
...
break
case 5
...
break
endswitch
break
case 0
break
endswitch
此指令适用于以下着色器阶段:
顶点着色器 | 几何着色器 | 像素着色器 |
---|---|---|
x | x | x |
最小着色器模型
以下着色器模型中支持此函数。
着色器模型 | 支持 |
---|---|
着色器模型 5 | 是 |
着色器模型 4.1 | 是 |
着色器模型 4 | 是 |
着色器模型 3 (DirectX HLSL) | 否 |
着色器模型 2 (DirectX HLSL) | 否 |
着色器模型 1 (DirectX HLSL) | 否 |