建立裝置 (Direct3D 9)

若要建立 Direct3D 裝置,請先建立 Direct3D 物件 (請參閱 Direct3DCreate9) 。 Direct3D 物件所建立的所有轉譯裝置都會共用相同的實體資源。 如果您從單一 Direct3D 物件建立多個轉譯裝置,將會產生極端效能負面影響,因為它們共用相同的硬體。

首先,初始化用來建立 Direct3D 裝置之 D3DPRESENT_PARAMETERS 結構的值。 下列程式碼範例會指定視窗化應用程式,其中後端緩衝區只會在垂直同步處理作業期間複製到前端緩衝區。

LPDIRECT3DDEVICE9 d3dDevice = NULL;

D3DPRESENT_PARAMETERS d3dpp; 

ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed   = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;

接下來,建立 Direct3D 裝置。 下列 IDirect3D9::CreateDevice 呼叫會指定預設配接器、硬體抽象層 (HAL) 裝置,以及軟體頂點處理。

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                    D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                    &d3dpp, &d3dDevice ) ) )
    return E_FAIL;

請注意,建立、釋放或重設裝置的呼叫應該只會發生在與焦點視窗視窗的視窗程式相同的執行緒上。

建立裝置之後,請設定其狀態。

Direct3D 裝置