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) | 아니요 |