DirectX Graphics 프로그래밍 가이드 고도의 주제 멀티 헤드   [목차열람] [주소복사] [슬롯비우기]
멀티 헤드
 
Microsoft DirectX 9.0

멀티 헤드


멀티 헤드 카드는, 공통의 frame buffer와 가속기를 가져, 독립한 디지털 아날로그 컨버터 (DAC)와 모니터 출력을 가지는 카드이다. 이 장치가 제공하는 멀티 모니터 지원을 사용하면 다른 디스플레이 어댑터를 같은 수 사용했을 경우보다 편리하다.

멀티 헤드 카드는, 복수의 풀 스크린 스왑 체인을 구동하는 단일의 애플리케이션 프로그래밍 인터페이스 (API) 레벨의 장치로서 API 가 공개한다. 이것에 의해, 모든 리소스가 모든 헤드에 의해 공유되어 모든 헤드가 완전히 같은 능력을 가지게 된다. 각 헤드를 독립한 디스플레이 모드로 설정해, 따로 따로 리프레쉬 (IDirect3DSwapChain9::Present 를 사용) 할 수 있다. 동시에 프레젠테이션 하려면 ,IDirect3DDevice9::Present 를 사용한다.

멀티 헤드 장치의 스왑 체인은 모두 풀 스크린이 아니면 안된다. 멀티 헤드 모드에 바뀌었을 때, 장치는 풀 스크린인 채가 아니면 안된다. 윈도우 모드에 돌아올 때는, 장치를 파기할 필요가 있다 (Alt+Tab 키에 의한 최소화 처리는 예외).

비디오 메모리를 복수의 헤드에 분할해 각 헤드를 완전하게 독립한 가속기로서 취급하는 종래의 방법은, 지금도 일반적으로 사용되고 있다. 그 메카니즘에 대신해 이 제안이 유효가 되는 것은, 애플리케이션이 Microsoft® DirectX® 9.0 멀티 헤드 모드로 기능하도록(듯이) 특히 코딩 되고 있는 경우 뿐이다.

드라이버에는, 2 개의 처리 모드간의 변환에 필요한 정보가 제공된다.

1 개의 헤드는 "마스터" 헤드로 불려 같은 카드의 그 외의 헤드는 "종속" 헤드라고 부른다. 시스템내에 복수의 멀티 헤드 어댑터가 존재하는 경우, 1 개의 멀티 헤드 어댑터의 마스터 헤드와 그 종속 헤드는 "그룹" 이라고 부른다. 각 그룹은 그 그룹의 마스터 헤드의 어댑터 번호로 나타난다.

D3DCAPS9 구조체가 갱신되어, 다음의 하드웨어의 새로운 능력이 공개된다.

UINT NumberOfAdaptersInGroup; 
UINT MasterAdapterOrdinal; 
UINT AdapterOrdinalInGroup;

이 정의를 사용하면 DirectX 8. x 에서의 같게 어댑터가 각각 독립한 카드인것 같이, 멀티 헤드 카드로 복수의 어댑터를 표현할 수 있다.

멀티 헤드 장치를 생성 하려면 ,IDirect3D9::CreateDevice 에 동작 플래그 D3DCREATE_ADAPTERGROUP_DEVICE 를 지정한다. 프레젠테이션 파라미터 (D3DPRESENT_PARAMETERS 의 배열)에는,NumberOfAdaptersInGroup 요소를 포함할 필요가 있다. 런타임에 의해,AdapterOrdinalInGroup 의 번호순서에 각 헤드에 각 요소를 할당할 수 있다. D3DCREATE_ADAPTERGROUP_DEVICE 를 설정했을 경우는, 각 프레젠테이션 파라미터를 다음과 같이 설정할 필요가 있다.

게다가 EnableAutoDepthStencil 가 TRUE 의 경우는, 다음의 각 필드를 각 D3DPRESENT_PARAMETERS 와 같은 값으로 설정한다.

D3DCREATE_ADAPTERGROUP_DEVICE 가 설정되어 있는 경우,IDirect3DDevice9::CreateAdditionalSwapChain 의 추가 호출은 무효이다.

장치가 D3DCREATE_ADAPTERGROUP_DEVICE 를 사용해 생성 되고 있는 경우,IDirect3DDevice9::ResetD3DPRESENT_PARAMETERS 의 배열을 기대한다.

IDirect3DDevice9::Reset 에게 건네지는 각 D3DPRESENT_PARAMETERS 는 풀 스크린이 아니면 안된다. 윈도우 모드에 돌아오려면 , 멀티 헤드의 장치를 파기해, 멀티 헤드가 아닌 장치를 윈도우 모드로 생성 다시 할 필요가 있다.

다음에, 기본적인 사용법의 시나리오를 나타낸다.

1.  멀티 헤드 장치를 생성 한다.
2.  장치의 각 스왑 체인으로 반복해:
   3.  i 번째의 스왑 체인에 대해서 GetBackBuffer 를 호출한다
   4.  SetRenderTarget 를 호출한다.  
   5.  DrawPrimitive 를 호출한다.  
   6.  옵션으로서 swapchain::Present 를 호출한다 (또는,
      모든 스왑 체인이 드로잉(Drawing) 되어 루프외에서 프레젠테이션 될 때까지 기다린다).
7.  반복의 종료.
8.  옵션으로서 device::Present 를 사용해 모든 스왑 체인을 프레젠테이션 한다.

더 자세한 정보는, 「IDirect3D9::CreateDevice 」 및 「IDirect3DDevice9::GetNumberOfSwapChains 」를 참조할것.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP