Microsoft DirectX 8.0 (C++)

テクニックを使用したレンダリング

次の例は、アプリケーションでのテクニックのレンダリング方法を示している。有効なテクニックを検出した後、次のサンプル コードに示すように、アプリケーションでは ID3DXTechnique::Begin メソッドを呼び出して、テクニックの適用を開始する。

UINT uPasses;
pTechnique->Begin(&uPasses);

Begin の唯一のパラメータは、符号なし整数のアドレスである。Begin が呼び出された後、この値にはテクニックで使用されるパスの数が格納される。

次の手順として、各パスの個別のレンダリングを行う。パスをレンダリングするには、ID3DXTechnique::Pass メソッドを呼び出す。次のサンプル コードでは、ループを使って、テクニックに必要なすべてのパスをレンダリングしている。

for(UINT uPass = 0; uPass < uPasses; uPass++)
{
    pTechnique->Pass(uPass);
    g_d3dDevice->SetStreamSource( 0, pvbVertices, sizeof(WATER_VERTEX) );
    g_d3dDevice->SetIndices( pIB, 0 );
    g_d3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, 0,
                                       uVertices, 0, uIndices -2 );
}

Pass を呼び出すことで、シーンのレンダリングに必要なステートを設定している。

  ID3DXTechnique::Begin は、IDirect3DDevice8::BeginScene / IDirect3DDevice8::EndScene ブロック内で呼び出す必要がある。