Microsoft DirectX 8.0 (C++)

ステップ 4 : シーンのレンダリングおよび表示

シーンをレンダリングおよび表示するために、このステップのサンプル コードでは、バック バッファを青色にクリアし、バック バッファの内容をフロント バッファに転送して、フロント バッファを画面に表示している。

シーンをクリアするには、IDirect3DDevice8::Clear メソッドを呼び出す。

// バック バッファを青色にクリアする。
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );

Clear が受け取る最初の 2 つのパラメータは、Microsoft® Direct3D® に、クリアする矩形の配列のサイズとアドレスを通知する。矩形の配列は、レンダリング ターゲット サーフェス上のクリアする領域を記述する。

通常、レンダリング ターゲット全体を覆う 1 つの矩形を使用する。これを行うには、最初のパラメータを 0 に、2 番目のパラメータを NULL に設定する。3 番目のパラメータは、メソッドの動作を決定する。レンダリング ターゲット サーフェス、関連深度バッファ、ステンシル バッファ、またはこの 3 つの任意の組み合わせをクリアすることができる。このチュートリアルでは、深度バッファを使用しないので、D3DCLEAR_TARGET 以外のフラグは使用しない。最後の 3 つのパラメータは、レンダリング ターゲット、深度バッファ、ステンシル バッファのクリア値を反映するように設定する。CreateDevice サンプル プロジェクトでは、レンダリング ターゲット サーフェスのクリア カラーを青 (D3DCOLOR_XRGB(0,0,255)) に設定している。最後の 2 つのパラメータは、対応するフラグが存在しないので、Clear メソッドで無視される。

ビューポートをクリアした後、CreateDevice サンプル プロジェクトは、次のサンプル コードに示すように、レンダリングの開始およびレンダリングの終了を Direct3D に通知する。

// シーンを開始する。
g_pd3dDevice->BeginScene();

// ここで、シーンのオブジェクトをレンダリングする。

// シーンを終了する。
g_pd3dDevice->EndScene();

IDirect3DDevice8::BeginScene および IDirect3DDevice8::EndScene メソッドは、レンダリングの開始時および終了時をそれぞれシステムに通知する。レンダリング メソッドは、この 2 つのメソッドの呼び出しの間でしか呼び出すことができない。レンダリング メソッドが正常に終了しなかった場合でも、BeginScene を再度呼び出す前に、EndScene を呼び出す必要がある。

シーンをレンダリングしたら、IDirect3DDevice8::Present メソッドを使ってシーンを表示する。

g_pd3dDevice->Present( NULL, NULL, NULL, NULL );

Present が受け取る最初の 2 つのパラメータは、転送元矩形と転送先矩形である。このステップのサンプル コードでは、この 2 つのパラメータを NULL に設定して、バック バッファ全体をフロント バッファに表示する。3 番目のパラメータは、このプレゼンテーションの転送先ウィンドウを設定する。このパラメータは NULL に設定されているので、D3DPRESENT_PARAMETERShWndDeviceWindow メンバが使用される。4 番目のパラメータは DirtyRegion パラメータで、ほとんどの場合 NULL に設定する必要がある。

このチュートリアルの最後のステップでは、アプリケーションをシャット ダウンする。これについては、「ステップ 5 : シャット ダウン」で説明する。