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;
デバイスの作成、解放、またはリセットのための呼び出しは、フォーカス ウィンドウのウィンドウ プロシージャと同じスレッドでのみ行うよう注意すること。
デバイス作成後は、そのステートを設定する。