switch (sm4 - asm)

根據選取器的值,將控制項傳送至交換器主體內的不同語句區塊。

switch src0.select_component
項目 描述
src0
[in]switch 語句的選取器。

備註

switch/endwitch建構的行為與 C 語言中的switch建構完全相同,但有下列例外狀況:針對落到下一個案例/預設值的 D3D11案例/預設語句,而沒有中斷,它們不能有任何程式碼。 允許多個 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)