Freigeben über


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.

Hinweis Mischen Sie die Verwendung von DXGI 1.0 (IDXGIFactory) und DXGI 1.1 (IDXGIFactory1) in einer Anwendung nicht. Verwenden Sie IDXGIFactory oder IDXGIFactory1, aber nicht beides in einer Anwendung.
 

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,
};
Hinweis Wenn die Direct3D 11.1-Runtime auf dem Computer vorhanden ist und pFeatureLevels auf NULL festgelegt ist, erstellt diese Funktion kein D3D_FEATURE_LEVEL_11_1 Gerät. Um ein D3D_FEATURE_LEVEL_11_1-Gerät zu erstellen, müssen Sie explizit ein D3D_FEATURE_LEVEL Array bereitstellen, das D3D_FEATURE_LEVEL_11_1 enthält. Wenn Sie ein D3D_FEATURE_LEVEL Array bereitstellen, das D3D_FEATURE_LEVEL_11_1 auf einem Computer enthält, auf dem die Direct3D 11.1-Runtime nicht installiert ist, schlägt diese Funktion sofort mit E_INVALIDARG fehl.
 

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:

  • DriverType muss D3D_DRIVER_TYPE_UNKNOWN sein.
  • Software muss NULL sein.
Wenn dagegen pAdapter == NULL ist, kann DriverType nicht auf D3D_DRIVER_TYPE_UNKNOWN festgelegt werden. Er kann auf eine der folgenden Werte festgelegt werden:
  • Wenn DriverType == D3D_DRIVER_TYPE_SOFTWARE, darf software nicht NULL sein.
  • Wenn DriverType == D3D_DRIVER_TYPE_HARDWARE, ist der verwendete Adapter der Standardadapter. Dabei handelt es sich um den ersten Adapter, der von IDXGIFactory1::EnumAdapters aufgezählt wird.
 

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

Weitere Informationen

Kernfunktionen