DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3D9 CreateDevice   [목차열람] [주소복사] [슬롯비우기]
IDirect3D9::CreateDevice 메서드
 
Microsoft DirectX 9.0

IDirect3D9::CreateDevice 메서드


디스플레이 어댑터를 나타내기 위한 장치를 생성 한다.

구문

HRESULT CreateDevice(      

    UINT Adapter,     D3DDEVTYPE DeviceType,     HWND hFocusWindow,     DWORD BehaviorFlags,     D3DPRESENT_PARAMETERS *pPresentationParameters,     IDirect3DDevice9** ppReturnedDeviceInterface );

파라미터

Adapter
[in] 디스플레이 어댑터를 나타내는 서수. D3DADAPTER_DEFAULT 는 항상 1차 디스플레이 어댑터이다.
DeviceType
[in] D3DDEVTYPE 열거형의 멤버. 목적의 장치 타입을 식별한다. 목적의 장치 타입을 이용할 수 없는 경우, 이 메서드는 실패한다.
hFocusWindow
[in] 이 Microsoft® Direct3D® 장치로 포커스를 설정하는 윈도우 핸들. 지정하는 윈도우는, 풀 스크린의 최상정도 윈도우가 아니면 안된다.
BehaviorFlags
[in] 장치 생성을 제어하는 1 개 또는 복수의 옵션의 편성. 더 자세한 정보는, 「D3DCREATE 」를 참조할것.
pPresentationParameters
[in, out] D3DPRESENT_PARAMETERS 구조체의 포인터. 생성 하는 장치의 프레젠테이션 파라미터가 기술되고 있다.

Microsoft Windows® 2000 및 Windows XP 의 경우, 풀 스크린 장치의 디스플레이 refresh rate는, 다음의 순서로 설정된다.

  1. 사용자 정의의 제로가 아닌 ForcedRefreshRate 레지스트리 키 (장치가 지원 하는 경우)
  2. 프레젠테이션 파라미터에 애플리케이션이 지정한 제로가 아닌 refresh rate값
  3. 최신의 데스크탑 모드의 refresh rate (장치가 지원 하는 경우)
  4. 75 Hz (장치가 지원 하는 경우)
  5. 60 Hz (장치가 지원 하는 경우)
  6. 장치의 디폴트.

지원되지 않은 refresh rate은, 그것보다 작은 지원 되고 있는 최대의 refresh rate로 옮겨진다. 예를 들어, 애플리케이션으로 63 Hz 를 지정했을 경우에는, 60 Hz 가 사용된다. 57 Hz 보다 작은 refresh rate는 지원 되지 않는다.

이 메서드를 호출하면,D3DPRESENT_PARAMETERS 의 복수의 멤버의 값이 바뀐다.

  • 윈도우 모드 및 풀 스크린 모드에 대해,BackBufferCount,BackBufferWidth, 및 BackBufferHeight = 0.
  • 윈도우 모드에만 붙어,BackBufferFormat = D3DFMT_UNKNOWN. 풀 스크린 모드의 경우는 포맷을 지정할 필요가 있다.

D3DCREATE_ADAPTERGROUP_DEVICE 를 설정했을 경우,pPresentationParameters 는 배열이다. 존재하는 헤드의 수에 관계없이, 1 개의 깊이/스텐실 표면만이 자동적으로 생성 된다.

ppReturnedDeviceInterface
[out, retval] 돌려받는 IDirect3DDevice9 인터페이스의 포인터 주소. 생성 된 장치를 나타낸다.

반환값

성공했을 경우는,D3D_OK 를 돌려준다.

실패했을 경우는, 다음의 몇개의 값을 돌려준다.

D3DERR_INVALIDCALL메서드의 호출이 무효이다. 예를 들어, 메서드의 파라미터에 무효인 값이 설정되어 있는 경우 등이다.
D3DERR_NOTAVAILABLE이 장치는, 문의한 테크닉을 지원 하고 있지 않다.
D3DERR_OUTOFVIDEOMEMORYDirect3D 가 처리를 실시하는데 충분한 디스플레이 메모리가 없다.


주의

이 메서드로부터는, 요구한 디스플레이 모드 (또는 윈도우)로 설정되어, 적절한 백 버퍼를 할당할 수 있던, 완전하게 동작하는 장치 인터페이스가 돌아간다. 애플리케이션은, 필요에 따라서 깊이 버퍼를 생성 해 설정하는 것만으로 좋다 (D3DPRESENT_PARAMETERSEnableAutoDepthStencil 가 FALSE 이라고 상정한다).

이 메서드는, WM_CREATE 의 처리중에 실행해서는 안된다. 애플리케이션은, WM_CREATE 의 처리중에 Direct3D 에 윈도우 핸들을 건네주어서는 안 된다. 장치의 생성·릴리즈·리셋을 위한 호출은, 포커스 윈도우의 윈도우 프로시저와 같은 thread를 사용해 실행할 필요가 있다.

D3DCREATE_HARDWARE_VERTEXPROCESSING,D3DCREATE_MIXED_VERTEXPROCESSING,D3DCREATE_SOFTWARE_VERTEXPROCESSING 는 서로 배타적인 플래그이며, 이 메서드를 호출할 때는, 이러한 정점 처리 플래그의 적어도 1개를 반드시 지정해야 한다.

장치의 일부로서 생성 된 백 버퍼는, 프레젠테이션 파라미터로 D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 가 지정되고 있는 경우에만 잠금 가능하다. 멀티 샘플 백 버퍼 및 깊이 표면은 잠글 수 없다.

IDirect3DDevice9::Reset ,IUnknown::Release ,IDirect3DDevice9::TestCooperativeLevel 메서드는, 이 메서드를 사용해 장치를 생성 한 thread와 같은 thread로부터 호출해야 한다.

윈도우 모드의 백 버퍼 포맷에 대해서는,IDirect3D9::CreateDevice,IDirect3DDevice9::Reset,IDirect3DDevice9::CreateAdditionalSwapChain 의 호출로 D3DFMT_UNKNOWN 를 지정할 수 있다. 즉, 애플리케이션에서는, 윈도우 모드에 대한 IDirect3D9::CreateDevice 를 호출하기 전에, 현재의 데스크탑 포맷을 문의할 필요는 없다. 풀 스크린 모드에 대해서는, 백 버퍼 포맷을 지정할 필요가 있다.

참조

Direct3DCreate9 ,D3DDEVICE_CREATION_PARAMETERS ,IDirect3DDevice9::Reset ,멀티 헤드


© 2002 Microsoft Corporation. All rights reserved.
↑TOP