Microsoft DirectX 8.0 (Visual Basic) |
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 : シーンのレンダリングおよび表示」で説明する。