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) | 否 |