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) | нет |