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列舉的第一個配接器。
DriverType
類型: D3D_DRIVER_TYPE
D3D_DRIVER_TYPE,表示要建立的驅動程式類型。
Software
類型: HMODULE
實作軟體點陣化之 DLL 的控制碼。 如果 DriverType是D3D_DRIVER_TYPE_SOFTWARE, 則軟體 不得為 Null。 呼叫 LoadLibrary、 LoadLibraryEx 或 GetModuleHandle來取得控制碼。 當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,
};
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 以取得正確的版本。
備註
若要建立 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 |
標頭 | d3d11.h |
程式庫 | D3D11.lib |
Dll | D3D11.dll |