Platform SDK: DirectX

ステップ 4.2 : シーンをレンダリングする

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。

[Visual Basic]

目的の動きを反映するようにモデルのジオメトリを更新すると、シーンのレンダリングを行うことができる。サンプル Triangle では、典型的な方法を採用している。アプリケーション定義サブルーチン RenderScene は、まず、ビューポートをクリアする。

Private Sub RenderScene()
' ビューポートを青色にクリアする。
g_d3dDevice.Clear 1, g_d3drcViewport(), D3DCLEAR_TARGET, &HFF, 0, 0

上記のコードでは、Direct3DDevice7.Clear メソッドを呼び出して、ビューポートをクリアしている。Clear メソッドが受け付ける最初の 2 つの引数は、レンダリング ターゲット サーフェス上のクリア対象領域を記述する矩形の配列、および、その配列からいくつの矩形をクリアするかをメソッドに通知する値である。通常、サンプル Triangle で行っているように、レンダリング ターゲット全体を覆う 1 つの矩形を使用する。3 番目の引数は、メソッドの動作を決定する。Clear によって、レンダリング ターゲット サーフェス、関連深度バッファ、ステンシル バッファ、あるいはこの 3 つの任意の組み合わせをクリアすることができる。このチュートリアルでは、深度バッファを使用しないので、D3DCLEAR_TARGET 以外のフラグは使用しない。最後の 3 つのパラメータは、レンダリング ターゲット、深度バッファ、ステンシル バッファのクリア値を反映するように設定する。サンプル Triangle では、レンダリング ターゲット サーフェスのクリアカラーを青に設定している。残りのパラメータは、このチュートリアルでは使用しないため、コードではゼロに設定している。Clear メソッドは、対応するフラグが指定されていない場合、引数を無視する。

ビューポートをクリアした後、サンプル Triangle は次に示すように、レンダリングの開始を Direct3D に知らせ、シーンをレンダリングし、レンダリングの終了を知らせる。

' シーンを開始し、三角形をレンダリングして、シーンを終了する。
g_d3dDevice.BeginScene
Call g_d3dDevice.DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_VERTEX, _
g_TriangleVert(0), 6, D3DDP_DEFAULT)
g_d3dDevice.EndScene

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

シーンをオフスクリーン レンダリング ターゲットにレンダリングすると、ユーザーのディスプレイを更新することが可能になる。サンプル Triangle では、これを「ステップ 4.3 : ディスプレイを更新する」で実行している。