switch 陳述式
視選取器的值而定,將控制項傳送至切換主體內的不同語句區塊。
[屬性] 參數 ( 選取器 ) { case 0 : { StatementBlock; } break; case 1 : { StatementBlock; } break; case n : { StatementBlock; } break; default : { StatementBlock; } break;
參數
-
屬性
-
選擇性參數,可控制語句的編譯方式。 如果未指定任何屬性,編譯器可能會使用硬體交換器,或發出一系列的 if 語句。
屬性 描述 扁平化 將 語句編譯為 一系列的 if 語句,每個語句都有 扁平化 屬性。 分支 將 語句編譯為一系列的 if 語句,每個語句都有 分支 屬性。 注意: 當您使用 著色器模型 2.x 或 著色器模型 3.0時,每次使用動態分支時,都會取用資源。 因此,如果您在以這些設定檔為目標時過度使用動態分支,則會收到編譯錯誤。 forcecase 強制硬體中的 switch 語句。 注意: 需要 功能層級 10_0 或更新版本硬體。 call 交換器中個別案例的主體將會移至硬體副程式,而交換器將會是一系列的副程式呼叫。 注意: 需要 功能層級 10_0 或更新版本硬體。 -
選擇
-
變數。 大括弧內的 case 語句會分別檢查此變數,以查看 SwitchValue 是否符合其特定 CaseValue。
-
StatementBlock
-
一或多個 語句。
備註
[branch] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
相當於:
[branch] if( a == 2 )
return 3;
else if( a == 1 )
return 1;
else if( a == 0 )
return 0;
else
return 6;
以下是強制案例和呼叫流程式控制制屬性的範例用法:
[forcecase] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
[call] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
規格需求
需求 | 值 |
---|---|
標頭 |
|