デバイスの作成 (Direct3D 9)

Direct3D デバイスを作成するには、まず Direct3D オブジェクトを作成します ( 「Direct3DCreate9」を参照)。 Direct3D オブジェクトによって作成されたすべてのレンダリング デバイスは、同じ物理リソースを共有します。 1 つの 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 デバイス