DirectX Graphics 프로그래밍 가이드 튜토리얼, 샘플, 툴, 힌트 샘플 스크린 세이버- Moire 샘플   [목차열람] [주소복사] [슬롯비우기]
Moire 샘플
 
Microsoft DirectX 9.0

Moire 샘플


설명

Moire 샘플에서는, Microsoft® Direct3D®  소프트웨어 개발 킷 (SDK) 스크린 세이버 프레임워크(framework)를 사용해, Direct3D 를 사용한 스크린 세이버를 생성 하는 방법을 나타낸다. 스크린 세이버 프레임워크(framework)는, 샘플 애플리케이션의 프레임워크(framework)와 유사하다. 같은 이름의 메서드나 변수를 다수 사용하고 있다. 스크린 세이버 프레임워크(framework)를 사용해 프로그램을 생성 하면, 보통의 Microsoft Windows® 애플리케이션은 아니고, 완전하게 기능하는 Windows 스크린 세이버가 생긴다.

Moire 스크린 세이버는, 회전하는 선과 색이 차례차례로 나타나 보고 있으면 빨려 들여가는 것 같은 인상을 준다. 장면(scene)를 구성하는 다각형은 전혀 움직이지 않지만, 텍스처 변환과 알파 혼합을 사용해, 생생하게 한 움직임이 있는 장면(scene)를 만들어 내고 있다.

패스

소스 파일 : (SDK 루트) \Samples\C++\Direct3D\ScreenSavers\Moire

실행 가능 파일 : (SDK 루트) \Samples\C++\Direct3D\Bin

사용자 가이드

Moire.scr 는, 설정·프리뷰·풀·테스트·패스워드 변경의 5 개의 모드로 시작 할 수 있다. 모드를 선택하려면 , moire.scr 파일을 마우스의 오른쪽 버튼으로 클릭 ( 오른쪽 클릭)해,[구성] 을 클릭한다. 또는, 커멘드 라인으로부터, 다음의 커멘드 라인 파라미터를 사용해 moire.scr 를 기동한다.
-c설정 모드
-t테스트 모드
-p프리뷰 모드
-a패스워드 변경 모드
-s풀 모드

스크린 세이버가 풀 모드로 실행되고 있을 때는, 임의의 키를 누를까 마우스를 이동 하면, 종료한다.

프로그래밍 정보

스크린 세이버 프레임워크(framework)를 사용한 프로그램은, Direct3D 샘플 애플리케이션 프레임워크(framework)를 사용한 프로그램과 비슷하다. 각 스크린 세이버는, 메인 애플리케이션 클래스로부터 파생한 클래스 CD3DScreensaver 를 생성 할 필요가 있다. 각 스크린 세이버에 고유의 기능을 제공하려면 , FrameMove, Render, InitDeviceObjects 등의 가상 함수의 독자 버전을 스크린 세이버에 처리 한다.

생성 하는 스크린 세이버를 멀티 모니터 대응으로 하는데, 그만큼 많은 추가 작업은 필요없다. 스크린 세이버를 멀티 모니터로 실행하지 않는 경우는,m_bOneScreenOnly 변수를 TRUE 로 설정한다. 디폴트에서는, 이 값은 FALSE 로 설정되어 있다. 장치를 변경할 때마다, 함수 SetDevice 가 호출된다. Moire 에서는, 이것을 처리하기 위해서,DeviceObjects 로 불리는 구조체를 생성 한다. 여기에는, 장치 고유의 포인터 및 값이 모두 포함되어 있다. CMoireScreensaver 는,DeviceObjects 구조체의 배열 m_DeviceObjectsArray 를 저장 한다. SetDevice 가 불려 가면m_pDeviceObjects 는, 지정한 장치의 DeviceObjects 구조체를 가리키도록(듯이) 변경된다. 렌더링시에는,m_rcRenderTotal 는, 모든 모니터에 이르는 렌더링 영역을 참조해,m_rcRenderCurDevice 는, 현재의 장치의 모니터의 렌더링 영역을 참조한다. 함수 SetProjectionMatrix 는, 이러한 변수를 올바르게 사용해, 모든 모니터에 이르는 장면(scene)를 렌더링 하는지, 또는 장면(scene)를 각 모니터에 표시하도록(듯이), 투영 행렬을 설정하는 1 개의 방법을 나타낸다. 사용하는 투영 행렬은 m_bAllScreensSame 의 값에 따라서 달라, 그 값은, 설정 다이알로그 박스로 사용자를 제어할 수 있도록(듯이) 할 수가 있다.

프로그램의 기동시에는, 다양한 스크린 세이버의 설정을 레지스터로부터 읽어내기 위해서(때문에), 스크린 세이버 프레임워크(framework)에 의해 ReadSettings 함수가 호출된다. 사용자가 스크린 세이버를 설정 할 때는,DoConfig 가 호출된다. 프로그램은 이것에 응해, 다양한 스크린 세이버의 설정용 컨트롤을 포함한 다이알로그 박스를 생성 할 필요가 있다. 이 다이알로그 박스에는,[Display Settings] 로 불리는 버튼도 필요하다. 이 버튼이 밀리면DoScreenSettingsDialog 를 호출한다. 사용자는, 이 공통을 다이알로그 박스로, 각 모니터로 사용하는 렌더러 및 디스플레이 모드를 설정할 수 있다. 멤버 변수 m_strRegPath 는, 스크린 세이버의 설정을 저장 하는 레지스트리의 패스로 설정한다. 레지스트리의 읽기/쓰기 함수로 이 변수를 사용할 수 있다. 스크린 세이버 프레임워크(framework)에서는, 경우에 의해, 디폴트의 디스플레이 모드에 관한 정보도, 이 변수로 보존한다.

이 샘플에서는, 헬퍼-함수등의 프로그래밍 요소로부터 구성되는 Microsoft DirectX® 코드를 사용한다. 이 코드는 DirectX SDK 외 샘플과 공유되고 있다. 샘플 프레임워크(framework)의 헤더는 (SDK 루트)\Samples\C++\Common\Include, 소스 코드는 (SDK 루트) \Samples\C++\Common\Src 에 있다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP