D3D11CreateDevice-Funktion (d3d11.h)
Erstellt ein Gerät, das die Grafikkarte darstellt.
Syntax
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
);
Parameter
[in, optional] pAdapter
Typ: IDXGIAdapter*
Ein Zeiger auf den Grafikkarten, der beim Erstellen eines Geräts verwendet werden soll. Übergeben Sie NULL , um den Standardadapter zu verwenden. Dabei handelt es sich um den ersten Adapter, der von IDXGIFactory1::EnumAdapters aufgezählt wird.
DriverType
Typ: D3D_DRIVER_TYPE
Die D3D_DRIVER_TYPE, die den zu erstellenden Treibertyp darstellt.
Software
Typ: HMODULE
Ein Handle für eine DLL, die einen Softwarerasterer implementiert. Wenn DriverTypeD3D_DRIVER_TYPE_SOFTWARE ist, darf software nicht NULL sein. Rufen Sie das Handle ab, indem Sie LoadLibrary, LoadLibraryEx oder GetModuleHandle aufrufen.
Flags
Typ: UINT
Die zu aktivierenden Laufzeitebenen (siehe D3D11_CREATE_DEVICE_FLAG); -Werte können zusammen bitweise OR'd sein.
[in, optional] pFeatureLevels
Typ: const D3D_FEATURE_LEVEL*
Ein Zeiger auf ein Array von D3D_FEATURE_LEVELs, die die Reihenfolge der zu erstellenden Featureebenen bestimmen. Wenn pFeatureLevels auf NULL festgelegt ist, verwendet diese Funktion das folgende Array von Featureebenen:
{
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,
};
FeatureLevels
Typ: UINT
Die Anzahl der Elemente in pFeatureLevels.
SDKVersion
Typ: UINT
Die SDK-Version; verwenden Sie D3D11_SDK_VERSION.
[out, optional] ppDevice
Typ: ID3D11Geräte**
Gibt die Adresse eines Zeigers auf ein ID3D11Device-Objekt zurück, das das erstellte Gerät darstellt. Wenn dieser Parameter NULL ist, wird kein ID3D11Device zurückgegeben.
[out, optional] pFeatureLevel
Typ: D3D_FEATURE_LEVEL*
Gibt bei erfolgreicher Ausführung den ersten erfolgreichen D3D_FEATURE_LEVEL aus dem pFeatureLevels-Array zurück. Geben Sie NULL als Eingabe an, wenn Sie nicht ermitteln müssen, welche Featureebene unterstützt wird.
[out, optional] ppImmediateContext
Typ: ID3D11DeviceContext**
Gibt die Adresse eines Zeigers auf ein ID3D11DeviceContext-Objekt zurück, das den Gerätekontext darstellt. Wenn dieser Parameter NULL ist, wird kein ID3D11DeviceContext zurückgegeben.
Rückgabewert
Typ: HRESULT
Diese Methode kann einen der Direct3D 11-Rückgabecodes zurückgeben.
Diese Methode gibt E_INVALIDARG zurück, wenn Sie den pAdapter-Parameter auf einen Wert ungleich NULL und den DriverType-Parameter auf den D3D_DRIVER_TYPE_HARDWARE-Wert festlegen.
Diese Methode gibt DXGI_ERROR_SDK_COMPONENT_MISSING zurück, wenn Sie D3D11_CREATE_DEVICE_DEBUG in Flags angeben und die falsche Version der Debugebene auf Ihrem Computer installiert ist. Installieren Sie das neueste Windows SDK, um die richtige Version zu erhalten.
Hinweise
Dieser Einstiegspunkt wird von der Direct3D 11-Runtime unterstützt, die unter Windows 7, Windows Server 2008 R2 und als Update auf Windows Vista (KB971644) verfügbar ist.
So erstellen Sie ein Direct3D 11.1-Gerät (ID3D11Device1), das unter Windows 8 verfügbar ist, Windows Server 2012 und Windows 7 und Windows Server 2008 R2 mit installiertem Plattformupdate für Windows 7 erstellen Sie zunächst ein ID3D11Device mit dieser Funktion und rufen dann die QueryInterface-Methode für das ID3D11Device-Objekt auf, um die ID3D11Device-Schnittstelle abzurufen.
Um ein Direct3D 11.2-Gerät (ID3D11Device2) zu erstellen, das unter Windows 8.1 und Windows Server 2012 R2 verfügbar ist, erstellen Sie zunächst ein ID3D11Device mit dieser Funktion und rufen dann die QueryInterface-Methode für das ID3D11Device-Objekt auf, um die ID3D11Device2-Schnittstelle abzurufen.
Legen Sie ppDevice und ppImmediateContext auf NULL fest, um zu bestimmen, welche Featureebene unterstützt wird, indem Sie pFeatureLevel betrachten, ohne ein Gerät zu erstellen.
Ein Beispiel finden Sie unter Vorgehensweise: Erstellen eines Geräts und sofortigen Kontext. Um ein Gerät und eine Swapchain gleichzeitig zu erstellen, verwenden Sie D3D11CreateDeviceAndSwapChain.
Wenn Sie den pAdapter-Parameter auf einen Wert ungleich NULL festlegen, müssen Sie auch den DriverType-Parameter auf den D3D_DRIVER_TYPE_UNKNOWN-Wert festlegen. Wenn Sie den pAdapter-Parameter auf einen Wert ungleich NULL und den DriverType-Parameter auf den D3D_DRIVER_TYPE_HARDWARE-Wert festlegen, gibt D3D11CreateDevice ein HRESULT von E_INVALIDARG zurück.
Unterschiede zwischen Direct3D 10 und Direct3D 11: In Direct3D 10 diktierte das Vorhandensein von pAdapter , welcher Adapter verwendet werden sollte, und der DriverType konnte nicht mit dem Adapter übereinstimmen. Wenn Sie in Direct3D 11 versuchen, eine Hardware oder ein Softwaregerät zu erstellen, legen Sie pAdapter != NULL fest, was die anderen Eingaben auf folgendes beschränkt:
|
Die Funktionssignatur PFN_D3D11_CREATE_DEVICE wird als Typedef bereitgestellt, sodass Sie dynamische Verknüpfungstechniken (GetProcAddress) anstelle einer statischen Verknüpfung verwenden können.
Windows Phone 8: Diese API wird unterstützt.
Windows Phone 8.1: Diese API wird unterstützt.
Anforderungen
Zielplattform | Windows |
Kopfzeile | d3d11.h |
Bibliothek | D3D11.lib |
DLL | D3D11.dll |