IDirect3D9::CreateDevice 方法 (d3d9.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 登錄機碼。
- 簡報參數中應用程式指定的非零重新整理速率值。
- 如果裝置支援,則會重新整理最新桌面的速率。
- 如果裝置支援,則為 75 hertz。
- 如果裝置支援,則為 60 hertz。
- 裝置預設值。
pPresentationParameters 是輸入和輸出參數。 呼叫此方法可能會變更數個成員,包括:
- 如果呼叫 方法之前,BackBufferCount、BackBufferWidth 和BackBufferHeight為0,則方法傳回時將會變更它們。
- 如果在呼叫 方法之前,BackBufferFormat 等於 D3DFMT_UNKNOWN ,當方法傳回時,將會變更它。
[out, retval] ppReturnedDeviceInterface
類型: IDirect3DDevice9**
所傳回 IDirect3DDevice9 介面之指標的位址,表示已建立的裝置。
傳回值
類型: HRESULT
如果方法成功,傳回值會D3D_OK。 如果方法失敗,傳回值可以是下列其中一項:D3DERR_DEVICELOST、D3DERR_INVALIDCALL、D3DERR_NOTAVAILABLE D3DERR_OUTOFVIDEOMEMORY。
備註
這個方法會傳回完整運作的裝置介面、設定為必要的顯示模式 (或視窗化) ,並使用適當的後台緩衝區配置。 若要開始轉譯,應用程式只需要在 D3DPRESENT_PARAMETERS) 中建立和設定深度緩衝區 (假設 EnableAutoDepthStencil 為 FALSE。
當您建立 Direct3D 裝置時,會提供兩個不同的視窗參數:焦點視窗 (hFocusWindow) 和裝置視窗 (D3DPRESENT_PARAMETERS) 中的 hDeviceWindow。 每個視窗的用途如下:
- 當應用程式從前景模式切換到背景模式時,焦點視窗會發出 Direct3D 警示, (透過 Alt-Tab、單擊滑鼠或某些其他方法) 。 應用程式所建立的每個裝置都會共用單一焦點視窗。
- 裝置視窗會決定螢幕上後端緩衝區的位置和大小。 當後端緩衝區內容在 Present 期間複製到前端緩衝區時,Direct3D 會使用此方式。
請注意,呼叫此方法時,D3DCREATE_HARDWARE_VERTEXPROCESSING、D3DCREATE_MIXED_VERTEXPROCESSING和D3DCREATE_SOFTWARE_VERTEXPROCESSING都是互斥旗標,而且至少必須指定其中一個頂點處理旗標。
只有在簡報參數中指定了D3DPRESENTFLAG_LOCKABLE_BACKBUFFER時,才會鎖定作為裝置一部分建立的後端緩衝區。 (多重取樣後台緩衝區和深度表面永遠不會鎖定。)
必須從使用此方法建立裝置的相同線程呼叫 Reset、 IUnknown 和 TestCocolLevel 方法。
呼叫 CreateDevice、 Reset 和 CreateAdditionalSwapChain 時,可以針對視窗模式後台緩衝區格式指定D3DFMT_UNKNOWN。 這表示應用程式不需要在呼叫 CreateDevice 進行視窗模式之前查詢目前的桌面格式。 針對全螢幕模式,必須指定後台緩衝區格式。
如果您嘗試在0x0大小的視窗中建立裝置, CreateDevice 將會失敗。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d9.h (包含 D3D9.h) |
程式庫 | D3D9.lib |