D3D11CreateDevice 函式 (d3d11.h)
建立代表顯示配接器的裝置。
語法
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
);
參數
[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以取得控制碼。
Flags
類型: UINT
要啟用 (的執行時間 層 ,請參閱 D3D11_CREATE_DEVICE_FLAG) ;值可以位 OR'd 在一起。
[in, optional] pFeatureLevels
類型:const D3D_FEATURE_LEVEL*
D3D_FEATURE_LEVEL陣列的指標,決定要嘗試建立的功能層級順序。 如果 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。
[out, optional] ppDevice
類型: ID3D11Device**
傳回代表所建立裝置之 ID3D11Device 物件的指標位址。 如果此參數為 Null,將不會傳回 ID3D11Device。
[out, optional] pFeatureLevel
類型: D3D_FEATURE_LEVEL*
如果成功,則會從成功之 pFeatureLevels陣列傳回第一個D3D_FEATURE_LEVEL。 如果您不需要判斷支援哪些功能層級,請提供 Null 作為輸入。
[out, optional] ppImmediateContext
類型: ID3D11DeviceCoNtext**
傳回代表裝置內容之 ID3D11DeviceCoNtext 物件的指標位址。 如果此參數為 Null,將不會傳回 ID3D11DeviceCoNtext。
傳回值
類型: HRESULT
這個方法可以傳回其中一個 Direct3D 11 傳回碼。
如果您將 pAdapter 參數設定為非Null 值,並將 DriverType 參數設定為D3D_DRIVER_TYPE_HARDWARE值,這個方法會傳回E_INVALIDARG。
如果您在Flags中指定D3D11_CREATE_DEVICE_DEBUG,且電腦上已安裝不正確的偵錯層版本,這個方法會傳回DXGI_ERROR_SDK_COMPONENT_MISSING。 安裝最新的 Windows SDK 以取得正確的版本。
備註
Direct3D 11 執行時間支援此進入點,其可在 Windows 7、Windows Server 2008 R2 上使用,以及更新為 Windows Vista (KB971644) 。
若要建立 Direct3D 11.1 裝置, (ID3D11Device1) , 這適用于已安裝 Windows 7 平臺更新的 Windows 8、Windows Server 2012 和 Windows 7 和 Windows Server 2008 R2 上,您必須先使用此函式建立ID3D11Device,然後在ID3D11Device物件上呼叫QueryInterface方法,以取得ID3D11Device1介面。
若要建立 Direct3D 11.2 裝置 (ID3D11Device2) ,該裝置可在 Windows 8.1 和 Windows Server 2012 R2 上使用,先使用此函式建立ID3D11Device,然後在ID3D11Device物件上呼叫QueryInterface方法,以取得ID3D11Device2介面。
藉由查看pFeatureLevel而不建立裝置,將ppDevice和ppImmediateCoNtext設定為Null,以判斷支援哪些功能層級。
如需範例,請參閱 如何:建立裝置和立即內容;若要同時建立裝置和交換鏈結,請使用 D3D11CreateDeviceAndSwapChain。
如果您將 pAdapter 參數設定為非Null 值,您也必須將 DriverType 參數設定為D3D_DRIVER_TYPE_UNKNOWN值。 如果您將 pAdapter 參數設定為非Null 值,並將 DriverType 參數設定為 D3D_DRIVER_TYPE_HARDWARE 值, D3D11CreateDevice 會傳回E_INVALIDARG的 HRESULT 。
Direct3D 10 與 Direct3D 11 之間的差異: 在 Direct3D 10 中, pAdapter 的存在會指定要使用的介面卡,而 DriverType 可能會與配接器不符。 在 Direct3D 11 中,如果您嘗試建立硬體或軟體裝置,請設定 pAdapter != Null ,以限制其他輸入為:
|
函式簽章PFN_D3D11_CREATE_DEVICE會以 typedef 的形式提供,因此您可以使用動態連結技術, (GetProcAddress) 而非靜態連結。
Windows Phone 8:支援此 API。
Windows Phone 8.1:支援此 API。
規格需求
目標平台 | Windows |
標頭 | d3d11.h |
程式庫 | D3D11.lib |
Dll | D3D11.dll |