IDirect3D9::CreateDevice 方法 (d3d9helper.h)
建立裝置來代表顯示配接器。
語法
HRESULT CreateDevice(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] HWND hFocusWindow,
[in] DWORD BehaviorFlags,
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface
);
參數
[in] Adapter
類型: UINT
代表顯示配接器的序號。 D3DADAPTER_DEFAULT 一律是主要顯示配接器。
[in] DeviceType
類型: D3DDEVTYPE
代表所需裝置類型的 D3DDEVTYPE 列舉類型成員。 如果所需的裝置類型無法使用,方法將會失敗。
[in] hFocusWindow
類型: HWND
當應用程式從前景模式切換到背景模式時,焦點視窗會警示 Direct3D。 請參閱<備註>。
- 若為全螢幕模式,指定的視窗必須是最上層視窗。
- 若為視窗模式 ,只有當pPresentationParameters 的 hDeviceWindow 成員設定為有效的非 Null 值時,此參數才會是Null 。
[in] BehaviorFlags
類型: DWORD
控制裝置建立的一或多個選項群組合。 如需詳細資訊,請參閱 D3DCREATE。
[in, out] pPresentationParameters
D3DPRESENT_PARAMETERS結構的指標,描述要建立之裝置的呈現參數。 如果 BehaviorFlags 指定 D3DCREATE_ADAPTERGROUP_DEVICE,pPresentationParameters 是陣列。 不論存在的頭部數目為何,系統都會自動建立一個深度/樣板表面。
針對 Windows 2000 和 Windows XP,全螢幕裝置顯示重新整理速率會依照下列順序設定:
- 如果裝置支援,則為使用者指定的非零 ForcedRefreshRate 登錄機碼。
- 簡報參數中應用程式指定的非零重新整理速率值。
- 如果裝置支援,則為最新桌面的重新整理速率。
- 如果裝置支援,則為 75hz。
- 如果裝置支援,則為 60hz。
- 裝置預設值。
pPresentationParameters 同時是輸入和輸出參數。 呼叫這個方法可能會變更數個成員,包括:
- 如果在呼叫 方法之前,BackBufferCount、BackBufferWidth 和 BackBufferHeight 為 0,則會在方法傳回時變更它們。
- 如果在呼叫 方法之前,BackBufferFormat 等於 D3DFMT_UNKNOWN ,當方法傳回時,它將會變更。
[out, retval] ppReturnedDeviceInterface
類型: IDirect3DDevice9**
傳回 之 IDirect3DDevice9 介面的指標位址,代表已建立的裝置。
傳回值
類型: HRESULT
如果方法成功,傳回值會D3D_OK。 如果方法失敗,傳回值可以是下列其中一項:D3DERR_DEVICELOST、D3DERR_INVALIDCALL、D3DERR_NOTAVAILABLE D3DERR_OUTOFVIDEOMEMORY。
備註
這個方法會傳回完整運作的裝置介面、將 設定為所需的顯示模式 (或視窗化) ,並使用適當的背景緩衝區配置。 若要開始轉譯,應用程式只需要建立和設定深度緩衝區, (假設 EnableAutoDepthStencil 在D3DPRESENT_PARAMETERS) 為FALSE。
當您建立 Direct3D 裝置時,您會提供兩個不同的視窗參數:焦點視窗 (hFocusWindow) 和裝置視窗 (D3DPRESENT_PARAMETERS) 中的 hDeviceWindow。 每個視窗的用途如下:
- 當應用程式從前景模式切換到背景模式 (時,焦點視窗會透過 Alt-Tab、按一下滑鼠或一些其他方法) ,警示 Direct3D。 應用程式所建立的每個裝置都會共用單一焦點視窗。
- 裝置視窗會決定螢幕上後端緩衝區的位置和大小。 當後端緩衝區內容在 Present期間複製到前端緩衝區時,Direct3D 會使用此方式。
請注意,D3DCREATE_HARDWARE_VERTEXPROCESSING、D3DCREATE_MIXED_VERTEXPROCESSING和D3DCREATE_SOFTWARE_VERTEXPROCESSING都是互斥旗標,而且呼叫此方法時必須至少指定其中一個頂點處理旗標。
只有在簡報參數中指定D3DPRESENTFLAG_LOCKABLE_BACKBUFFER時,才會鎖定建立為裝置一部分的後端緩衝區。 (多重取樣後端緩衝區和深度表面永遠不會鎖定。)
必須從使用此方法建立裝置的相同執行緒呼叫 Reset、 IUnknown和 TestCoown 方法。
呼叫 CreateDevice、 Reset和 CreateAdditionalSwapChain時,可以針對視窗模式背景緩衝區格式指定D3DFMT_UNKNOWN。 這表示應用程式不需要在呼叫 CreateDevice 進行視窗模式之前查詢目前的桌面格式。 針對全螢幕模式,必須指定背景緩衝區格式。
如果您嘗試在0x0大小視窗上建立裝置, CreateDevice 將會失敗。
需求
目標平台 | Windows |
標頭 | d3d9helper.h (包含 D3D9.h) |
程式庫 | D3D9.lib |