Microsoft DirectX 8.0 (C++)

デバイスの作成

  指定の Microsoft® Direct3D® オブジェクトによって作成されたレンダリング デバイスは、すべて同じ物理リソースを共有する。単一の Direct3D オブジェクトから複数のレンダリング デバイスを作成することは可能であるが、これらはすべて同じハードウェアを共有するため、パフォーマンスが大きく低下する。

C++ アプリケーションで Direct3D デバイスを作成するには、「Direct3D へのアクセス」で説明するように、まず Direct3D オブジェクトを作成する必要がある。

まず、Direct3D デバイスの作成に使用する D3DPRESENT_PARAMETERS 構造体の値を初期化する。次のコードは、VSYNC でのみバック バッファがフロント バッファにフリップされるウィンドウ アプリケーションを指定する。

LPDIRECT3DDEVICE8 d3dDevice = NULL;

D3DPRESENT_PARAMETERS d3dpp; 

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

次に、Direct3D デバイスを作成する。次の IDirect3D8::CreateDevice 呼び出しは、デフォルト アダプタ、ハードウェア アブストラクション レイヤ (HAL) デバイス、およびソフトウェア頂点処理を指定する。

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

デバイスの作成、解放、またはリセットのための呼び出しは、フォーカス ウィンドウのウィンドウ プロシージャと同じスレッドでのみ行うよう注意すること。

デバイス作成後は、そのステートを設定する。