다음을 통해 공유


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*

만들 디바이스의 프레젠테이션 매개 변수를 설명하는 D3DPRESENT_PARAMETERS 구조체에 대한 포인터입니다. BehaviorFlags가 D3DCREATE_ADAPTERGROUP_DEVICE 지정하는 경우 pPresentationParameters는 배열입니다. 존재하는 헤드 수에 관계없이 깊이/스텐실 표면이 하나만 자동으로 만들어집니다.

Windows 2000 및 Windows XP의 경우 전체 화면 디바이스 디스플레이 새로 고침 빈도는 다음 순서로 설정됩니다.

  1. 디바이스에서 지원하는 경우 사용자가 지정한 0이 아닌 ForcedRefreshRate 레지스트리 키입니다.
  2. 프레젠테이션 매개 변수의 애플리케이션 지정 0이 아닌 새로 고침 빈도 값입니다.
  3. 디바이스에서 지원하는 경우 최신 데스크톱의 새로 고침 속도입니다.
  4. 디바이스에서 지원하는 경우 75 헤르츠입니다.
  5. 디바이스에서 지원하는 경우 60 헤르츠입니다.
  6. 디바이스 기본값입니다.
지원되지 않는 새로 고침 속도는 기본적으로 지원되는 가장 가까운 새로 고침 빈도로 설정됩니다. 예를 들어 애플리케이션에서 63개의 헤르츠를 지정하는 경우 60개의 헤르츠가 사용됩니다. 57 헤르츠 미만의 지원되는 새로 고침 빈도는 없습니다.

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에서 현재 중에 백 버퍼 내용이 전면 버퍼에 복사되는 경우에 사용됩니다.
이 메서드는 WM_CREATE 처리하는 동안 실행해서는 안 됩니다. 애플리케이션은 WM_CREATE 처리하는 동안 Direct3D에 창 핸들을 전달해서는 안 됩니다. 디바이스를 만들거나 해제하거나 초기화하기 위한 모든 호출은 포커스 창의 창 프로시저와 동일한 스레드를 사용하여 수행해야 합니다.

D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING 및 D3DCREATE_SOFTWARE_VERTEXPROCESSING 상호 배타적인 플래그이며 이 메서드를 호출할 때 이러한 꼭짓점 처리 플래그 중 하나 이상을 지정해야 합니다.

디바이스의 일부로 만든 백 버퍼는 프레젠테이션 매개 변수에 D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 지정된 경우에만 잠글 수 있습니다. (다중 샘플링된 백 버퍼 및 깊이 표면은 잠글 수 없습니다.)

Reset, IUnknownTestCooperativeLevel 메서드는 이 메서드를 사용하여 디바이스를 만드는 동일한 스레드에서 호출되어야 합니다.

CreateDevice, ResetCreateAdditionalSwapChain을 호출할 때 창 모드 백 버퍼 형식에 대해 D3DFMT_UNKNOWN 지정할 수 있습니다. 즉, 창 모드에 대해 CreateDevice 를 호출하기 전에 애플리케이션이 현재 데스크톱 형식을 쿼리할 필요가 없습니다. 전체 화면 모드의 경우 백 버퍼 형식을 지정해야 합니다.

0x0 크기의 창에서 디바이스를 만들려고 하면 CreateDevice 가 실패합니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 d3d9.h(D3D9.h 포함)
라이브러리 D3D9.lib

추가 정보

D3DDEVICE_CREATION_PARAMETERS

Direct3DCreate9

IDirect3D9

멀티헤드(Direct3D 9)

Reset