다음을 통해 공유


D3D11CreateDeviceAndSwapChain 함수(d3d11.h)

디스플레이 어댑터와 렌더링에 사용되는 스왑 체인을 나타내는 디바이스를 만듭니다.

구문

HRESULT D3D11CreateDeviceAndSwapChain(
  [in, optional]  IDXGIAdapter               *pAdapter,
                  D3D_DRIVER_TYPE            DriverType,
                  HMODULE                    Software,
                  UINT                       Flags,
  [in, optional]  const D3D_FEATURE_LEVEL    *pFeatureLevels,
                  UINT                       FeatureLevels,
                  UINT                       SDKVersion,
  [in, optional]  const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
  [out, optional] IDXGISwapChain             **ppSwapChain,
  [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을 호출하여 핸들을 가져옵니다. D3D_DRIVER_TYPE D3D_DRIVER_TYPE_SOFTWARENULL이면 값이 NULL이 아니어야 합니다.

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 사용합니다.

[in, optional] pSwapChainDesc

형식: const DXGI_SWAP_CHAIN_DESC*

스왑 체인에 대한 초기화 매개 변수를 포함하는 스왑 체인 설명( DXGI_SWAP_CHAIN_DESC 참조)에 대한 포인터입니다.

[out, optional] ppSwapChain

형식: IDXGISwapChain**

렌더링에 사용되는 스왑 체인을 나타내는 IDXGISwapChain 개체에 대한 포인터의 주소를 반환합니다.

[out, optional] ppDevice

형식: ID3D11Device**

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

[out, optional] pFeatureLevel

형식: D3D_FEATURE_LEVEL*

디바이스에서 지원하는 기능 수준 배열의 첫 번째 요소를 나타내는 D3D_FEATURE_LEVEL 대한 포인터를 반환합니다. 지원되는 기능 수준을 결정할 필요가 없는 경우 NULL 을 입력으로 제공합니다.

[out, optional] ppImmediateContext

형식: ID3D11DeviceContext**

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

반환 값

형식: HRESULT

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

이 메서드는 세션 0 프로세스에서 호출하는 경우 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE 반환합니다.

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

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

설명

참고 세션 0 프로세스에서 이 메서드를 호출하면 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE 반환됩니다.
 
이 진입점은 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 인터페이스를 가져옵니다.

또한 입력 매개 변수 종속성에 대한 자세한 내용은 D3D11CreateDevice 의 설명 섹션을 참조하세요. 스왑 체인을 만들지 않고 디바이스를 만들려면 D3D11CreateDevice 함수를 사용합니다.

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

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

사용 현황 정보

참고 Windows 스토어 앱에는 D3D11CreateDeviceAndSwapChain 함수가 없습니다. 대신 Windows 스토어 앱은 D3D11CreateDevice 함수를 사용한 다음 IDXGIFactory2::CreateSwapChainForCoreWindow 메서드를 사용합니다.
 
참고 이 함수는 스왑 체인 만들기의 최근 추가 기능을 지원하도록 업데이트되지 않았습니다. 최신 스왑 체인 생성 방법은 IDXGIFactory2 의 메서드( CreateSwapChainForHwnd, CreateSwapChainForCoreWindowCreateSwapChainForComposition 포함)를 참조하세요.
 
Windows Phone 8: 이 API가 지원됩니다.

요구 사항

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

추가 정보

핵심 함수