다음을 통해 공유


switch(sm4 - asm)

선택기의 값에 따라 스위치 본문 내의 다른 문 블록으로 제어를 전송합니다.

스위치 src0.select_component
항목 설명
src0
[in] switch 문의 선택기입니다.

설명

switch/endswitch 구문은 다음 예외를 제외하고 C 언어의 switch 구문처럼 작동합니다. break 없이 다음 case/default까지 이어지는 D3D11 case/default 문의 경우 그 안에 코드가 있을 수 없습니다. default를 비롯한 여러 case 문은 순차적으로 표시되어 동일한 코드 블록을 공유할 수 있습니다.

조건은 32비트 레지스터 구성 요소 또는 즉시 수량이어야 합니다. 같음 비교는 비트(정수)입니다.

D3D11의 Shader 명령과 마찬가지로 하드웨어는 switch 문을 직접 구현하거나 구현하지 않을 수 있습니다.

Switch 문은 중첩될 수 있습니다. 각 switch 블록은 case 문의 수와 관계없이, 서브루틴 및 기본당 흐름 제어 중첩 깊이 제한(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)