Creates a device that represents the display adapter.
HRESULT D3D11CreateDevice(
IDXGIAdapter *pAdapter,
D3D_DRIVER_TYPE DriverType,
HMODULE Software,
UINT Flags,
const D3D_FEATURE_LEVEL *pFeatureLevels,
UINT FeatureLevels,
UINT SDKVersion,
ID3D11Device **ppDevice,
D3D_FEATURE_LEVEL *pFeatureLevel,
ID3D11DeviceContext **ppImmediateContext
)
pAdapter
Type: IDXGIAdapter *
[in, optional] A pointer to the video adapter to use when creating a device. Pass NULL to use the default adapter, which is the first adapter that is enumerated by IDXGIFactory::EnumAdapters or IDXGIFactory1::EnumAdapters1.
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
Type: D3D_DRIVER_TYPE
The D3D_DRIVER_TYPE, which represents the driver type to create.
Software
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.
Flags
Type: UINT
The runtime layers to enable (see D3D11_CREATE_DEVICE_FLAG); values can be bitwise OR’d together.
pFeatureLevels
Type: D3D_FEATURE_LEVEL *
[in, optional] Determines the order of feature levels to attempt to create. Must be NULL, which causes this function to use 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
Type: UINT
The number of elements in pFeatureLevels.
SDKVersion
Type: UINT
The SDK version; use D3D11_SDK_VERSION.
ppDevice
Type: ID3D11Device **
[out, optional] Returns the address of a pointer to an ID3D11Device object that represents the device created.
pFeatureLevel
Type: D3D_FEATURE_LEVEL *
[out, optional] If successful, returns the first D3D_FEATURE_LEVEL from the pFeatureLevels array which succeeded. Otherwise, returns 0.
ppImmediateContext
Type: ID3D11DeviceContext **
[out, optional] Returns the address of a pointer to an ID3D11DeviceContext object that represents the device context.
Type: HRESULT
This method returns one of the Direct3D 11 return codes.
Set ppDevice and ppImmediateContext to NULL to determine which feature level is supported by looking at pFeatureLevel without creating a device.
For an example, see How To: Create a Device and Immediate Context; to create a device and a swap chain at the same time, use D3D11CreateDeviceAndSwapChain.
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, D3D11CreateDevice returns an HRESULT of E_INVALIDARG.
Differences between Direct3D 10 and Direct3D 11: In Direct3D 10, the presence of pAdapter dictated which adapter to use and the DriverType could mismatch what the adapter was. In Direct3D 11, if you are trying to create a hardware or a software device, set pAdapter != NULL which constrains the other inputs to be:
|
Header: Declared in d3d11_x.h (d3d11.h on other Windows platforms).