Export (0) Print
Expand All

D3D11CreateDeviceAndSwapChain function

Creates a device that represents the display adapter and a swap chain used for rendering.

Syntax


HRESULT D3D11CreateDeviceAndSwapChain(
  _In_   IDXGIAdapter *pAdapter,
  _In_   D3D_DRIVER_TYPE DriverType,
  _In_   HMODULE Software,
  _In_   UINT Flags,
  _In_   const D3D_FEATURE_LEVEL *pFeatureLevels,
  _In_   UINT FeatureLevels,
  _In_   UINT SDKVersion,
  _In_   const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
  _Out_  IDXGISwapChain **ppSwapChain,
  _Out_  ID3D11Device **ppDevice,
  _Out_  D3D_FEATURE_LEVEL *pFeatureLevel,
  _Out_  ID3D11DeviceContext **ppImmediateContext
);

Parameters

pAdapter [in]

Type: IDXGIAdapter*

A pointer to the video adapter to use when creating a device. Pass NULL to use the default adapter, which is the first adapter enumerated by IDXGIFactory1::EnumAdapters.

Note  Do not mix the use of DXGI 1.0 (IDXGIFactory) and DXGI 1.1 (IDXGIFactory1) in an application. Use IDXGIFactory or IDXGIFactory1, but not both in an application.

DriverType [in]

Type: D3D_DRIVER_TYPE

The D3D_DRIVER_TYPE, which represents the driver type to create.

Software [in]

Type: HMODULE

A handle to a DLL that implements a software rasterizer. If DriverType is D3D_DRIVER_TYPE_SOFTWARE, Software must not be NULL. Get the handle by calling LoadLibrary, LoadLibraryEx , or GetModuleHandle. The value should be non-NULL when D3D_DRIVER_TYPE is D3D_DRIVER_TYPE_SOFTWARE and NULL otherwise.

Flags [in]

Type: UINT

The runtime layers to enable (see D3D11_CREATE_DEVICE_FLAG); values can be bitwise OR'd together.

pFeatureLevels [in]

Type: const D3D_FEATURE_LEVEL*

A pointer to an array of D3D_FEATURE_LEVELs, which determine the order of feature levels to attempt to create. If pFeatureLevels is set to NULL, this function uses the following array of feature levels:



{
    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,
};
          

Note  If the Direct3D 11.1 runtime is present on the computer and pFeatureLevels is set to NULL, this function won't create a D3D_FEATURE_LEVEL_11_1 device. To create a D3D_FEATURE_LEVEL_11_1 device, you must explicitly provide a D3D_FEATURE_LEVEL array that includes D3D_FEATURE_LEVEL_11_1. If you provide a D3D_FEATURE_LEVEL array that contains D3D_FEATURE_LEVEL_11_1 on a computer that doesn't have the Direct3D 11.1 runtime installed, this function immediately fails with E_INVALIDARG.

FeatureLevels [in]

Type: UINT

The number of elements in pFeatureLevels.

SDKVersion [in]

Type: UINT

The SDK version; use D3D11_SDK_VERSION.

pSwapChainDesc [in]

Type: const DXGI_SWAP_CHAIN_DESC*

A pointer to a swap chain description (see DXGI_SWAP_CHAIN_DESC) that contains initialization parameters for the swap chain.

ppSwapChain [out]

Type: IDXGISwapChain**

Returns the address of a pointer to the IDXGISwapChain object that represents the swap chain used for rendering.

ppDevice [out]

Type: ID3D11Device**

Returns the address of a pointer to an ID3D11Device object that represents the device created. Supply NULL as an input to return the highest supported feature level in pFeatureLevel.

pFeatureLevel [out]

Type: D3D_FEATURE_LEVEL*

Returns a pointer to a D3D_FEATURE_LEVEL, which represents the first element in an array of feature levels supported by the device.

ppImmediateContext [out]

Type: ID3D11DeviceContext**

Returns the address of a pointer to an ID3D11DeviceContext object that represents the device context.

Return value

Type: HRESULT

This method can return one of the Direct3D 11 Return Codes.

This method returns DXGI_ERROR_NOT_CURRENTLY_AVAILABLE if you call it in a Session 0 process.

This method returns E_INVALIDARG if you set the pAdapter parameter to a non-NULL value and the DriverType parameter to the D3D_DRIVER_TYPE_HARDWARE value.

Remarks

Note  If you call this method in a Session 0 process, it returns DXGI_ERROR_NOT_CURRENTLY_AVAILABLE.

This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to Windows Vista (KB971644).

To create a Direct3D 11.1 device (ID3D11Device1), which is available on Windows 8, Windows Server 2012, and Windows 7 and Windows Server 2008 R2 with the Platform Update for Windows 7 installed, you first create a ID3D11Device with this function, and then call the QueryInterface method on the ID3D11Device object to obtain the ID3D11Device1 interface.

To create a Direct3D 11.2 device (ID3D11Device2), which is available on Windows 8.1 and Windows Server 2012 R2, you first create a ID3D11Device with this function, and then call the QueryInterface method on the ID3D11Device object to obtain the ID3D11Device2 interface.

Also, see the remarks section in D3D11CreateDevice for details about input parameter dependencies. To create a device without creating a swap chain, use the D3D11CreateDevice function.

If you set the pAdapter parameter to a non-NULL value, you must also set the DriverType parameter to the D3D_DRIVER_TYPE_UNKNOWN value. If you set the pAdapter parameter to a non-NULL value and the DriverType parameter to the D3D_DRIVER_TYPE_HARDWARE value, D3D11CreateDeviceAndSwapChain returns an HRESULT of E_INVALIDARG.

Notes for Windows Store apps

The D3D11CreateDeviceAndSwapChain function does not exist for Windows Store apps. Instead, Windows Store apps use the D3D11CreateDevice function and then use the IDXGIFactory2::CreateSwapChainForCoreWindow method.

Windows Phone 8: This API is supported.

Requirements

Header

D3D11.h

Library

D3D11.lib

DLL

D3D11.dll

See also

Core Functions

 

 

Community Additions

ADD
Show:
© 2014 Microsoft