DirectX Graphics 프로그래밍 가이드 튜토리얼, 샘플, 툴, 힌트 샘플 Clip Volume 샘플 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
ClipVolume 샘플에서는, 렌더링 시에 셰이더를 사용해 임의의 모델로부터 구를 "공제하는" 방법을 나타낸다. 이 방법은, 가시화 애플리케이션으로 복잡한 개체의 안쪽을 표시할 경우에 도움이 된다. 이 샘플에서는, 양면 조명의 실행 방법도 가리킨다.
소스 파일 : (SDK 루트) \Samples\C++\Direct3D\ClipVolume
실행 가능 파일 : (SDK 루트) \Samples\C++\Direct3D\Bin
다음의 표는 , 처리 되고 있는 키를 나타내고 있다. 메뉴 커멘드를 사용해 같은 조작을 실시할 수가 있다.
키 | 동작 |
---|---|
Enter | 장면을 시작 및 정지한다. |
Space 키 | 장면을 조금씩 진행한다. |
F1 | 헬프 또는 사용 가능한 커멘드를 표시한다. |
F2 | 새로운 렌더링 장치 또는 새로운 디스플레이 모드를 선택하도록(듯이) 사용자에 지시한다. |
Alt+Enter | 풀 스크린 모드와 윈도우 모드를 바꾼다. |
Esc | 애플리케이션을 종료한다. |
이 샘플에서는, 마우스를 사용해 시점의 위치를 제어할 수 있다.
이 샘플에서는, 2 개의 ID3DXMesh 개체를 생성 한다. 1 개는 찻주전자용, 이제 1개는 구이다. 찻주전자를 렌더링 하려면 정점 셰이더와 픽셀 셰이더를 사용해, 구의 렌더링에는 다른 정점 셰이더를 사용한다.
구의 정점 셰이더는 특수한 처리는 실시하지 않는다. 정점 위치에 대해서 표준적인 월드 뷰 투영 변환을 실행해, 디퓨즈색을50% 알파로 진한 파랑으로 설정하는 것만으로 있다. 구는 찻주전자의 내부를 표시시키기 (위해)때문에만의 목적으로 사용하는 것에 주의하면 좋겠다. 샘플에 나타내는 클리핑 이펙트를 얻는데 구의 렌더링은 불필요하다.
찻주전자의 정점 셰이더는 다음의 3 개의 태스크를 실행한다.
찻주전자의 픽셀 셰이더는, 텍스처 좌표가 0 보다 작은 경우는 픽셀을 렌더링 하지 않게,texkill 명령을 사용한다. 구의 안쪽에서는, 모든 정점 및 픽셀의 x 텍스처 좌표는 부가 되므로, 구의 안쪽에 있는 픽셀은 렌더링 되지 않는다.
이 샘플은, Microsoft® DirectX® 소프트웨어 개발 킷 (SDK) 외 샘플과 공유하는 샘플 프레임워크(framework) 코드를 사용한다. 샘플 프레임워크(framework)의 헤더는 (SDK 루트)\DXSDK\Samples\C++\Common\Include, 소스 코드는 (SDK 루트) \DXSDK\Samples\C++\Common\Src 에 있다.