D3D11CreateDevice 함수(d3d11.h)

디스플레이 어댑터를 나타내는 디바이스를 만듭니다.

구문

HRESULT D3D11CreateDevice(
  [in, optional]  IDXGIAdapter            *pAdapter,
                  D3D_DRIVER_TYPE         DriverType,
                  HMODULE                 Software,
                  UINT                    Flags,
  [in, optional]  const D3D_FEATURE_LEVEL *pFeatureLevels,
                  UINT                    FeatureLevels,
                  UINT                    SDKVersion,
  [out, optional] ID3D11Device            **ppDevice,
  [out, optional] D3D_FEATURE_LEVEL       *pFeatureLevel,
  [out, optional] ID3D11DeviceContext     **ppImmediateContext
);

매개 변수

[in, optional] pAdapter

형식: IDXGIAdapter*

디바이스를 만들 때 사용할 비디오 어댑터에 대한 포인터입니다. IDXGIFactory1::EnumAdapters로 열거된 첫 번째 어댑터인 기본 어댑터를 사용하도록 NULL을 전달합니다.

참고 애플리케이션에서 DXGI 1.0(IDXGIFactory) 및 DXGI 1.1(IDXGIFactory1) 사용을 혼합하지 마세요. IDXGIFactory 또는 IDXGIFactory1을 사용하지만 애플리케이션에서 둘 다 사용하지는 않습니다.
 

DriverType

형식: D3D_DRIVER_TYPE

만들 드라이버 유형을 나타내는 D3D_DRIVER_TYPE.

Software

형식: HMODULE

소프트웨어 래스터라이저를 구현하는 DLL에 대한 핸들입니다. DriverTypeD3D_DRIVER_TYPE_SOFTWARE경우 SoftwareNULL이 아니어야 합니다. LoadLibrary, LoadLibraryEx 또는 GetModuleHandle을 호출하여 핸들을 가져옵니다.

Flags

형식: UINT

사용하도록 설정할 런타임 계층 ( D3D11_CREATE_DEVICE_FLAG 참조) 값은 함께 비트 OR일 수 있습니다.

[in, optional] pFeatureLevels

형식: const D3D_FEATURE_LEVEL*

만들려는 기능 수준의 순서를 결정하는 D3D_FEATURE_LEVEL배열에 대한 포인터입니다. pFeatureLevelsNULL로 설정된 경우 이 함수는 다음과 같은 기능 수준 배열을 사용합니다.

{
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_3,
    D3D_FEATURE_LEVEL_9_2,
    D3D_FEATURE_LEVEL_9_1,
};
참고 Direct3D 11.1 런타임이 컴퓨터에 있고 pFeatureLevelsNULL로 설정된 경우 이 함수는 D3D_FEATURE_LEVEL_11_1 디바이스를 만들지 않습니다. D3D_FEATURE_LEVEL_11_1 디바이스를 만들려면 D3D_FEATURE_LEVEL_11_1 포함하는D3D_FEATURE_LEVEL 배열을 명시적으로 제공해야 합니다. Direct3D 11.1 런타임이 설치되지 않은 컴퓨터에서 D3D_FEATURE_LEVEL_11_1 포함하는 D3D_FEATURE_LEVEL배열을 제공하는 경우 이 함수는 E_INVALIDARG 함께 즉시 실패합니다.
 

FeatureLevels

형식: UINT

pFeatureLevels의 요소 수입니다.

SDKVersion

형식: UINT

SDK 버전; D3D11_SDK_VERSION 사용합니다.

[out, optional] ppDevice

형식: ID3D11Device**

만든 디바이스를 나타내는 ID3D11Device 개체에 대한 포인터의 주소를 반환합니다. 이 매개 변수가 NULL이면 ID3D11Device가 반환되지 않습니다.

[out, optional] pFeatureLevel

형식: D3D_FEATURE_LEVEL*

성공하면 성공한 pFeatureLevels 배열에서 첫 번째 D3D_FEATURE_LEVEL 반환합니다. 지원되는 기능 수준을 결정할 필요가 없는 경우 NULL 을 입력으로 제공합니다.

[out, optional] ppImmediateContext

형식: ID3D11DeviceContext**

디바이스 컨텍스트를 나타내는 ID3D11DeviceContext 개체에 대한 포인터의 주소를 반환합니다. 이 매개 변수가 NULL이면 ID3D11DeviceContext가 반환되지 않습니다.

반환 값

형식: HRESULT

이 메서드는 Direct3D 11 반환 코드 중 하나를 반환할 수 있습니다.

이 메서드는 pAdapter 매개 변수를 NULL 이 아닌 값으로 설정하고 DriverType 매개 변수를 D3D_DRIVER_TYPE_HARDWARE 값으로 설정하면 E_INVALIDARG 반환합니다.

이 메서드는 Flags에서 D3D11_CREATE_DEVICE_DEBUG 지정하고 잘못된 버전의 디버그 계층이 컴퓨터에 설치된 경우 DXGI_ERROR_SDK_COMPONENT_MISSING 반환합니다. 최신 Windows SDK를 설치하여 올바른 버전을 가져옵니다.

설명

이 진입점은 Windows 7, Windows Server 2008 R2 및 Windows Vista(KB971644)에 대한 업데이트로 제공되는 Direct3D 11 런타임에서 지원됩니다.

Windows 8에서 사용할 수 있는 Direct3D 11.1 디바이스(ID3D11Device1)를 만들려면 Windows 7용 플랫폼 업데이트가 설치된 Windows Server 2012 및 Windows 7 및 Windows Server 2008 R2에서는 먼저 이 함수를 사용하여 ID3D11Device를 만든 다음 ID3D11Device 개체에서 QueryInterface 메서드를 호출하여 ID3D11Device1 인터페이스를 가져옵니다.

Windows 8.1 및 Windows Server 2012 R2에서 사용할 수 있는 Direct3D 11.2 디바이스(ID3D11Device2)를 만들려면 먼저 이 함수를 사용하여 ID3D11Device를 만든 다음 ID3D11Device2 개체에서 QueryInterface 메서드를 호출하여 ID3D11Device2 인터페이스를 가져옵니다.

ppDeviceppImmediateContextNULL로 설정하여 디바이스를 만들지 않고 pFeatureLevel을 확인하여 지원되는 기능 수준을 결정합니다.

예제는 방법: 디바이스 만들기 및 즉각적인 컨텍스트를 참조하세요. 디바이스와 스왑 체인을 동시에 만들려면 D3D11CreateDeviceAndSwapChain을 사용합니다.

pAdapter 매개 변수를 NULL이 아닌 값으로 설정하는 경우 DriverType 매개 변수도 D3D_DRIVER_TYPE_UNKNOWN 값으로 설정해야 합니다. pAdapter 매개 변수를 NULL이 아닌 값으로 설정하고 DriverType 매개 변수를 D3D_DRIVER_TYPE_HARDWARE 값으로 설정하면 D3D11CreateDevice는 E_INVALIDARG HRESULT를 반환합니다.

Direct3D 10과 Direct3D 11 간의 차이점:

Direct3D 10에서 pAdapter 가 있으면 사용할 어댑터가 지정되고 DriverType 이 어댑터와 일치하지 않습니다.

Direct3D 11에서 하드웨어 또는 소프트웨어 디바이스를 만들려는 경우 pAdapter != NULL 을 설정하여 다른 입력을 다음으로 제한합니다.

  • DriverType 은 D3D_DRIVER_TYPE_UNKNOWN
  • 소프트웨어NULL이어야 합니다.
반면 , pAdapter == NULL인 경우 DriverType 을 D3D_DRIVER_TYPE_UNKNOWN 설정할 수 없으며 다음 중 하나로 설정할 수 있습니다.
  • DriverType == D3D_DRIVER_TYPE_SOFTWARE 경우 SoftwareNULL일 수 없습니다.
  • DriverType == D3D_DRIVER_TYPE_HARDWARE 경우 사용되는 어댑터는 IDXGIFactory1::EnumAdapters로 열거된 첫 번째 어댑터인 기본 어댑터가 됩니다.
 

함수 서명 PFN_D3D11_CREATE_DEVICE typedef로 제공되므로 정적으로 연결하는 대신 동적 연결 기술(GetProcAddress)을 사용할 수 있습니다.

Windows Phone 8: 이 API가 지원됩니다.

Windows Phone 8.1: 이 API가 지원됩니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d11.h
라이브러리 D3D11.lib
DLL D3D11.dll

추가 정보

핵심 함수