Microsoft DirectX 8.0 (Visual Basic)

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

CreateDevice サンプル プロジェクトでは、タイマを使って特定の間隔で画面をレンダリングする。このサンプルでは、タイマの Interval プロパティを 40 に設定する。これは、40 ミリ秒おきに関数 Timer1_Timer が呼び出されることを意味する。タイマが実行されると、アプリケーション定義関数 Render を呼び出して、シーンをレンダリングして表示する。CreateDevice サンプル プロジェクトでは、バック バッファを青色にクリアし、バック バッファの内容をフロント バッファに転送して、フロント バッファを画面に表示している。

シーンをレンダリングするには、Direct3DDevice8.Clear メソッドを呼び出して開始する。

g_D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFF&, 1#, 0

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

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

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

' シーンを開始する。
g_D3DDevice.BeginScene

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

' シーンを終了する。
g_D3DDevice.EndScene

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

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

g_D3DDevice.Present ByVal 0, ByVal 0, 0, ByVal 0

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

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