switch 문
선택기의 값에 따라 스위치 본문 내의 다른 문 블록으로 제어를 전송합니다.
[Attribute] switch( Selector ) { case 0 : { StatementBlock; } break; case 1 : { StatementBlock; } break; case n : { StatementBlock; } break; default : { StatementBlock; } break;
매개 변수
-
Attribute
-
문이 컴파일되는 방법을 제어하는 선택적 매개 변수입니다. 특성이 지정되지 않은 경우 컴파일러는 하드웨어 스위치를 사용하거나 일련의 if 문을 내보낼 수 있습니다.
attribute 설명 평면화(flatten) 문을 각각 flatten 특성이 있는 일련의 if 문으로 컴파일합니다. 분기 문을 각각 branch 특성이 있는 일련의 if 문으로 컴파일합니다. 참고:셰이더 모델 2.x 또는 셰이더 모델 3.0을 사용하는 경우 동적 분기를 사용할 때마다 리소스를 사용합니다. 따라서 이러한 프로필을 대상으로 할 때 동적 분기를 과도하게 사용하면 컴파일 오류가 발생할 수 있습니다. forcecase 하드웨어에서 switch 문을 강제 실행합니다. 참고:기능 수준 10_0 이상 하드웨어가 필요합니다. call 스위치의 개별 사례 본문은 하드웨어 서브루틴으로 이동되고 스위치는 일련의 서브루틴 호출이 됩니다. 참고:기능 수준 10_0 이상 하드웨어가 필요합니다. -
Selector
-
변수입니다. 중괄호 안의 case 문은 각각 이 변수를 확인하여 SwitchValue가 특정 CaseValue와 일치하는지 확인합니다.
-
StatementBlock
-
하나 이상의 문입니다.
설명
[branch] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
이는 다음과 같습니다.
[branch] if( a == 2 )
return 3;
else if( a == 1 )
return 1;
else if( a == 0 )
return 0;
else
return 6;
다음은 forcecase 및 호출 흐름 제어 특성의 사용 예입니다.
[forcecase] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
[call] switch(a)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 3;
default:
return 6;
}
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|