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)

着色器模型 4 程序集 (DirectX HLSL)