IDirect3D9::CreateDevice 메서드(d3d9.h)
디스플레이 어댑터를 나타내는 디바이스를 만듭니다.
구문
HRESULT CreateDevice(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] HWND hFocusWindow,
[in] DWORD BehaviorFlags,
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface
);
매개 변수
[in] Adapter
형식: UINT
디스플레이 어댑터를 나타내는 서수입니다. D3DADAPTER_DEFAULT 항상 기본 디스플레이 어댑터입니다.
[in] DeviceType
형식: D3DDEVTYPE
원하는 디바이스 유형을 나타내는 D3DDEVTYPE 열거형 형식의 멤버입니다. 원하는 디바이스 유형을 사용할 수 없는 경우 메서드가 실패합니다.
[in] hFocusWindow
형식: HWND
포커스 창은 애플리케이션이 포그라운드 모드에서 백그라운드 모드로 전환할 때 Direct3D에 경고합니다. 설명 부분을 참조하세요.
- 전체 화면 모드의 경우 지정된 창이 최상위 창이어야 합니다.
- 창 모드의 경우 pPresentationParameters의 hDeviceWindow 멤버가 NULL이 아닌 유효한 값으로 설정된 경우에만 이 매개 변수는 NULL일 수 있습니다.
[in] BehaviorFlags
형식: DWORD
디바이스 만들기를 제어하는 하나 이상의 옵션 조합입니다. 자세한 내용은 D3DCREATE 참조하세요.
[in, out] pPresentationParameters
만들 디바이스의 프레젠테이션 매개 변수를 설명하는 D3DPRESENT_PARAMETERS 구조체에 대한 포인터입니다. BehaviorFlags가 D3DCREATE_ADAPTERGROUP_DEVICE 지정하는 경우 pPresentationParameters는 배열입니다. 존재하는 헤드 수에 관계없이 깊이/스텐실 표면이 하나만 자동으로 만들어집니다.
Windows 2000 및 Windows XP의 경우 전체 화면 디바이스 디스플레이 새로 고침 빈도는 다음 순서로 설정됩니다.
- 디바이스에서 지원하는 경우 사용자가 지정한 0이 아닌 ForcedRefreshRate 레지스트리 키입니다.
- 프레젠테이션 매개 변수의 애플리케이션 지정 0이 아닌 새로 고침 빈도 값입니다.
- 디바이스에서 지원하는 경우 최신 데스크톱의 새로 고침 속도입니다.
- 디바이스에서 지원하는 경우 75 헤르츠입니다.
- 디바이스에서 지원하는 경우 60 헤르츠입니다.
- 디바이스 기본값입니다.
pPresentationParameters는 입력 및 출력 매개 변수입니다. 이 메서드를 호출하면 다음을 비롯한 여러 멤버가 변경됩니다.
- 메서드가 호출되기 전에 BackBufferCount, BackBufferWidth 및 BackBufferHeight가 0이면 메서드가 반환될 때 변경됩니다.
- BackBufferFormat이 메서드가 호출되기 전에 D3DFMT_UNKNOWN 같으면 메서드가 반환될 때 변경됩니다.
[out, retval] ppReturnedDeviceInterface
형식: IDirect3DDevice9**
생성된 디바이스를 나타내는 반환된 IDirect3DDevice9 인터페이스에 대한 포인터의 주소입니다.
반환 값
형식: HRESULT
메서드가 성공하면 반환 값이 D3D_OK. 메서드가 실패하면 반환 값은 D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY 중 하나일 수 있습니다.
설명
이 메서드는 완전히 작동하는 디바이스 인터페이스를 반환하고 필요한 표시 모드(또는 창)로 설정하고 적절한 백 버퍼와 함께 할당합니다. 렌더링을 시작하려면 애플리케이션에서 깊이 버퍼를 만들고 설정하기만 하면 됩니다(D3DPRESENT_PARAMETERS EnableAutoDepthStencil이 FALSE라고 가정).
Direct3D 디바이스를 만들 때 포커스 창(hFocusWindow)과 디바이스 창( D3DPRESENT_PARAMETERS hDeviceWindow)의 두 가지 창 매개 변수를 제공합니다. 각 창의 목적은 다음과 같습니다.
- 포커스 창은 애플리케이션이 전경 모드에서 백그라운드 모드로 전환할 때(Alt-Tab, 마우스 클릭 또는 다른 방법을 통해) Direct3D에 경고합니다. 단일 포커스 창은 애플리케이션에서 만든 각 디바이스에서 공유됩니다.
- 디바이스 창은 화면에서 백 버퍼의 위치와 크기를 결정합니다. 이 기능은 Direct3D에서 현재 중에 백 버퍼 내용이 전면 버퍼에 복사되는 경우에 사용됩니다.
D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING 및 D3DCREATE_SOFTWARE_VERTEXPROCESSING 상호 배타적인 플래그이며 이 메서드를 호출할 때 이러한 꼭짓점 처리 플래그 중 하나 이상을 지정해야 합니다.
디바이스의 일부로 만든 백 버퍼는 프레젠테이션 매개 변수에 D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 지정된 경우에만 잠글 수 있습니다. (다중 샘플링된 백 버퍼 및 깊이 표면은 잠글 수 없습니다.)
Reset, IUnknown 및 TestCooperativeLevel 메서드는 이 메서드를 사용하여 디바이스를 만드는 동일한 스레드에서 호출되어야 합니다.
CreateDevice, Reset 및 CreateAdditionalSwapChain을 호출할 때 창 모드 백 버퍼 형식에 대해 D3DFMT_UNKNOWN 지정할 수 있습니다. 즉, 창 모드에 대해 CreateDevice 를 호출하기 전에 애플리케이션이 현재 데스크톱 형식을 쿼리할 필요가 없습니다. 전체 화면 모드의 경우 백 버퍼 형식을 지정해야 합니다.
0x0 크기의 창에서 디바이스를 만들려고 하면 CreateDevice 가 실패합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3d9.h(D3D9.h 포함) |
라이브러리 | D3D9.lib |