次の方法で共有


switch (sm4 - asm)

セレクターの値に応じて、スイッチ本体内の別のステートメント ブロックに制御を転送します。

スイッチ src0.select_component
Item 説明
src0
[入力]switch ステートメントのセレクター。

注釈

switch/endswitch コンストラクトは C 言語のスイッチ コンストラクトとまったく同じように動作しますが、例外は次のとおりです。D3D11 ケース/の既定のステートメントでは、中断なしで次のケース/の既定値に分類されるステートメントには、コードを含めることはできません。 同じコード ブロックを共有して、複数の case ステートメント ( 既定値を含む) を順番に表示できます。

条件は、32 ビットレジスタ コンポーネントまたは即時数量である必要があります。 等価比較はビットごとの (整数) です。

D3D11 のシェーダー命令と同様に、ハードウェアは スイッチ コンストラクトを直接実装する場合と実装しない場合があります。

Switch ステートメントは入れ子にすることができます。 各 スイッチ ブロックは、 ケース ステートメントの数に関係なく、サブルーチンとメインごとに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)