switch (sm4 - asm)

Передает управление другому блоку инструкций в теле переключателя в зависимости от значения селектора.

src0.select_component переключения
Элемент Описание
src0
[in] Селектор для оператора switch.

Комментарии

Конструкция switch/endswitch ведет себя точно так же, как конструкция switch в языке C, за следующим исключением: для операторовпо умолчанию D3D11/, которые переходят к следующему варианту/по умолчанию без прерывания, не может быть кода. Допускается последовательное появление нескольких операторов case , включая инструкции по умолчанию, совместное использование одного блока кода.

Условие должно быть 32-разрядным компонентом регистра или непосредственным количеством. Сравнение на равенство побитово (целое число).

Как и в случае с любой инструкцией шейдера в D3D11, оборудование может реализовать или не реализовать конструкцию коммутатора напрямую.

Операторы Switch могут быть вложенными. Каждый блок переключателя учитывается как один уровень по отношению к ограничению глубины вложенности элемента управления потоком 64 на подпрограмму и main, независимо от количества операторов case . Компилятор 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)