Freigeben über


D3D11CreateDeviceAndSwapChain-Funktion (d3d11.h)

Erstellt ein Gerät, das die Grafikkarte und eine Swapchain darstellt, die zum Rendern verwendet wird.

Syntax

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
);

Parameter

[in, optional] pAdapter

Typ: IDXGIAdapter*

Ein Zeiger auf die Grafikkarte, die 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

Der D3D_DRIVER_TYPE, der 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 die Software nicht NULL sein. Rufen Sie das Handle ab, indem Sie LoadLibrary, LoadLibraryEx oder GetModuleHandle aufrufen. Der Wert sollte nicht NULL sein, wenn D3D_DRIVER_TYPED3D_DRIVER_TYPE_SOFTWARE und andernfalls NULL ist.

Flags

Typ: UINT

Die zu aktivierenden Laufzeitebenen (siehe D3D11_CREATE_DEVICE_FLAG); Werte können bitweise ODER zusammen 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. Zum Erstellen eines D3D_FEATURE_LEVEL_11_1 Geräts 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.

[in, optional] pSwapChainDesc

Typ: const DXGI_SWAP_CHAIN_DESC*

Ein Zeiger auf eine Swapchainbeschreibung (siehe DXGI_SWAP_CHAIN_DESC), die Initialisierungsparameter für die Swapchain enthält.

[out, optional] ppSwapChain

Typ: IDXGISwapChain**

Gibt die Adresse eines Zeigers auf das IDXGISwapChain-Objekt zurück, das die zum Rendern verwendete Swapchain darstellt.

[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 einen Zeiger auf einen D3D_FEATURE_LEVEL zurück, der das erste Element in einem Array von Featureebenen darstellt, die vom Gerät unterstützt werden. 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 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE zurück, wenn Sie sie in einem Sitzung 0-Prozess aufrufen.

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

Hinweis Wenn Sie diese Methode in einem Sitzung 0-Prozess aufrufen, wird DXGI_ERROR_NOT_CURRENTLY_AVAILABLE zurückgegeben.
 
Dieser Einstiegspunkt wird von der Direct3D 11-Runtime unterstützt, die unter Windows 7, Windows Server 2008 R2 und als Update für 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, 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 ID3D11Device1-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.

Weitere Informationen zu Eingabeparameterabhängigkeiten finden Sie im Abschnitt "Hinweise" in D3D11CreateDevice . Um ein Gerät zu erstellen, ohne eine Swapchain zu erstellen, verwenden Sie die D3D11CreateDevice-Funktion .

Wenn Sie den pAdapter-Parameter auf einen Wert ohne NULL festlegen, müssen Sie auch den DriverType-Parameter auf den wert D3D_DRIVER_TYPE_UNKNOWN festlegen. Wenn Sie den pAdapter-Parameter auf einen Wert ohne NULL und den DriverType-Parameter auf den D3D_DRIVER_TYPE_HARDWARE-Wert festlegen, gibt D3D11CreateDeviceAndSwapChain ein HRESULT von E_INVALIDARG zurück.

Die Funktionssignatur PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN wird als Typedef bereitgestellt, sodass Sie dynamische Verknüpfungstechniken (GetProcAddress) anstelle von statisch verknüpfen können.

Hinweise zur Verwendung

Hinweis Die D3D11CreateDeviceAndSwapChain-Funktion ist für Windows Store-Apps nicht vorhanden. Stattdessen verwenden Windows Store-Apps die D3D11CreateDevice-Funktion und dann die IDXGIFactory2::CreateSwapChainForCoreWindow-Methode .
 
Hinweis Diese Funktion wurde nicht aktualisiert, um die letzten zusätzlichen Features der Swap chain-Erstellung zu unterstützen. Die aktuellsten Methoden zur Erstellung von Swap chain finden Sie in den Methoden von IDXGIFactory2 (einschließlich CreateSwapChainForHwnd, CreateSwapChainForCoreWindow und CreateSwapChainForComposition).
 
Windows Phone 8: Diese API wird unterstützt.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d11.h
Bibliothek D3D11.lib
DLL D3D11.dll

Weitere Informationen

Kernfunktionen