D3D11CreateDeviceAndSwapChain 函式 (d3d11.h)

建立代表顯示配接器和用於轉譯之交換鏈結的裝置。

語法

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

參數

[in, optional] pAdapter

類型: IDXGIAdapter*

建立 裝置時要使用的視訊介面卡指標。 傳遞 Null 以使用預設配接器,這是 IDXGIFactory1::EnumAdapters列舉的第一個配接器。

注意 請勿在應用程式中混合使用 DXGI 1.0 (IDXGIFactory) 和 DXGI 1.1 (IDXGIFactory1) 。 在應用程式中使用 IDXGIFactoryIDXGIFactory1,但不同時使用兩者。
 

DriverType

類型: D3D_DRIVER_TYPE

D3D_DRIVER_TYPE,表示要建立的驅動程式類型。

Software

類型: HMODULE

實作軟體點陣化之 DLL 的控制碼。 如果 DriverType是D3D_DRIVER_TYPE_SOFTWARE則軟體 不得為 Null。 呼叫 LoadLibraryLoadLibraryExGetModuleHandle來取得控制碼。 當D3D_DRIVER_TYPE為 D3D_DRIVER_TYPE_SOFTWARE且 Null 時,此值應該是非Null否則為Null

Flags

類型: UINT

要啟用 (的執行時間 請參閱 D3D11_CREATE_DEVICE_FLAG) ;值可以是位 OR'd。

[in, optional] pFeatureLevels

類型:const D3D_FEATURE_LEVEL*

D3D_FEATURE_LEVELs 陣列的指標,決定要嘗試建立的功能層級順序。 如果 pFeatureLevels 設定為 Null,此函式會使用下列功能層級陣列:


{
    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,
};
          
注意 如果電腦上的 Direct3D 11.1 執行時間存在, 且 pFeatureLevels 設定為 Null,則此函式不會建立 D3D_FEATURE_LEVEL_11_1 裝置。 若要建立D3D_FEATURE_LEVEL_11_1裝置,您必須明確提供包含D3D_FEATURE_LEVEL_11_1的D3D_FEATURE_LEVEL陣列。 如果您在未安裝 Direct3D 11.1 執行時間的電腦上提供包含D3D_FEATURE_LEVEL_11_1D3D_FEATURE_LEVEL陣列,此函式會立即失敗並E_INVALIDARG。
 

FeatureLevels

類型: UINT

pFeatureLevels中的元素數目。

SDKVersion

類型: UINT

SDK 版本;使用 D3D11_SDK_VERSION

[in, optional] pSwapChainDesc

類型:const DXGI_SWAP_CHAIN_DESC*

交換鏈結描述的指標 (請參閱 DXGI_SWAP_CHAIN_DESC) ,其中包含交換鏈結的初始化參數。

[out, optional] ppSwapChain

類型: IDXGISwapChain**

傳回 IDXGISwapChain 物件的指標位址,代表用於轉譯的交換鏈結。

[out, optional] ppDevice

類型: ID3D11Device**

傳回 ID3D11Device 物件的指標位址,代表所建立的裝置。 如果此參數為 Null,將不會傳回 ID3D11Device'。

[out, optional] pFeatureLevel

類型: D3D_FEATURE_LEVEL*

傳回 D3D_FEATURE_LEVEL的指標,代表裝置所支援功能層級陣列中的第一個專案。 如果您不需要判斷支援哪些功能層級,請提供 Null 作為輸入。

[out, optional] ppImmediateContext

類型: ID3D11DeviceCoNtext**

會傳回代表裝置內容的 ID3D11DeviceCoNtext 物件的指標位址。 如果此參數為 Null,則不會傳回 ID3D11DeviceCoNtext。

傳回值

類型: HRESULT

這個方法可以傳回其中一個 Direct3D 11 傳回碼

如果您在會話 0 進程中呼叫此方法,則會傳回 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE

如果您將 pAdapter 參數設定為非Null 值,並將 DriverType 參數設定為D3D_DRIVER_TYPE_HARDWARE值,這個方法會傳回E_INVALIDARG。

如果您在Flags中指定D3D11_CREATE_DEVICE_DEBUG,且電腦上已安裝不正確的偵錯層版本,這個方法會傳回DXGI_ERROR_SDK_COMPONENT_MISSING。 安裝最新的 Windows SDK 以取得正確的版本。

備註

注意 如果您在會話 0 進程中呼叫此方法,它會傳回 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE
 
Direct3D 11 執行時間支援此進入點,可在 Windows 7、Windows Server 2008 R2 上使用,以及更新為 Windows Vista (KB971644) 。

若要建立 Direct3D 11.1 裝置 (ID3D11Device1) , Windows 8、Windows Server 2012 和 Windows 7 和 Windows Server 2008 R2 上已安裝Windows 7 平臺更新,您必須先使用此函式建立ID3D11Device,然後在ID3D11Device物件上呼叫QueryInterface方法,以取得ID3D11Device1介面。

若要建立 Direct3D 11.2 裝置 (ID3D11Device2) ,這可在 Windows 8.1 和 Windows Server 2012 R2 上使用,先建立ID3D11Device,然後在ID3D11Device物件上呼叫QueryInterface方法,以取得ID3D11Device2介面。

此外,如需輸入參數相依性的詳細資訊,請參閱 D3D11CreateDevice 中的備註一節。 若要建立裝置而不建立交換鏈結,請使用 D3D11CreateDevice 函式。

如果您將 pAdapter 參數設定為非Null 值,您也必須將 DriverType 參數設定為D3D_DRIVER_TYPE_UNKNOWN值。 如果您將 pAdapter 參數設定為非Null 值,並將 DriverType 參數設定為 D3D_DRIVER_TYPE_HARDWARE 值, D3D11CreateDeviceAndSwapChain 會傳回 E_INVALIDARG 的 HRESULT

函式簽章PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN是以 typedef 的形式提供,因此您可以使用動態連結技術 (GetProcAddress) ,而不是靜態連結。

使用量注意事項

注意 Windows 市集應用程式不存在 D3D11CreateDeviceAndSwapChain 函式。 相反地,Windows 市集應用程式會使用 D3D11CreateDevice 函式,然後使用 IDXGIFactory2::CreateSwapChainForCoreWindow 方法。
 
注意 此函式尚未更新,以支援交換鏈結建立的最新其他功能。 如需最新的交換鏈結建立方法,請參閱IDXGIFactory2 (的方法,包括CreateSwapChainForHwnd、CreateSwapChainForCoreWindowCreateSwapChainForComposition) 。
 
Windows Phone 8:支援此 API。

規格需求

   
目標平台 Windows
標頭 d3d11.h
程式庫 D3D11.lib
Dll D3D11.dll

另請參閱

核心函式