Microsoft DirectX 8.0 (Visual Basic)

ステップ 2 : Direct3D の初期化

CreateDevice サンプル プロジェクトでは、フォームを表示した後、Form_Load から呼び出されるアプリケーション定義関数 InitD3D でシステムの初期化を実行する。アプリケーションのフォームを表示すると、Microsoft® Direct3D® デバイスの初期化を開始できる。このデバイスを使ってシーンのレンダリングを行う。この処理には、Direct3D オブジェクトの作成、プレゼンテーション パラメータの設定、および Direct3D デバイスの作成が含まれる。

Direct3D オブジェクトを作成するには、DirectX8.Direct3DCreate メソッドを使用する。この Direct3D オブジェクトを使って、デバイス、タイプ、モードなどを列挙することもできる。

Set g_D3D = g_DX.Direct3DCreate()
If g_D3D Is Nothing Then Exit Function

次のステップでは、Direct3D8.GetAdapterDisplayMode メソッドを使用して現在のディスプレイ モードを検出する。次のコードに、その処理を示す。

Dim Mode As D3DDISPLAYMODE
g_D3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT, mode

Direct3D デバイスを作成するときは、D3DDISPLAYMODE 構造体の Format メンバが使用される。ウィンドウ モードで実行する場合は、アダプタの現在のモードと一致するバック バッファを作成するために Format メンバが使用される。

D3DPRESENT_PARAMETERS オブジェクトのフィールドに入力することによって、3D アプリケーションの動作を指定できる。CreateDevice サンプル プロジェクトでは、Windowed メンバを 1 (TRUE)、SwapEffect メンバを D3DSWAPEFFECT_COPY_VSYNC、BackBufferFormat メンバに mode.Format を設定している。

Dim d3dpp As D3DPRESENT_PARAMETERS
d3dpp.Windowed = 1
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC
d3dpp.BackBufferFormat = mode.Format

最後のステップは、次のコード例に示されているように、Direct3D8.CreateDevice メソッドを使って Direct3D デバイスを作成することである。

Set g_D3DDevice = g_D3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, _
                                     D3DCREATE_SOFTWARE_VERTEXPROCESSING, d3dpp)
If g_D3DDevice Is Nothing Then Exit Function

上記のコードでは、D3DADAPTER_DEFAULT フラグを使って、デフォルトのアダプタを指定してデバイスを作成している。システムに複数のグラフィックス ハードウェア カードがインストールされていない限り、ほとんどの場合、システムのアダプタは 1 つだけである。ハードウェア デバイスをソフトウェア デバイスよりも優先することを指定するには、DeviceType パラメータに D3DDEVTYPE_HAL を指定する。このサンプルでは、D3DCREATE_SOFTWARE_VERTEXPROCESSING を使って、ソフトウェア頂点処理を使用することをシステムに指示している。D3DCREATE_HARDWARE_VERTEXPROCESSING を指定してハードウェア頂点処理を使用することをシステムに指示した場合、ハードウェア頂点処理をサポートするビデオ カードではパフォーマンスが大幅に向上することに注意すること。

必要な Direct3D オブジェクトが作成されたので、次のステップでは、レンダリング ループを実行する。これについては、「ステップ 3 : シーンのレンダリングおよび表示」で説明する。