Platform SDK: DirectX |
ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「Direct3D 直接モード Visual Basic チュートリアル」を参照すること。
サンプル Triangle のアプリケーション定義関数 Render3DEnvironment は、呼び出されるとすぐに、App_FrameMove (別のアプリケーション定義関数) を呼び出す。App_FrameMove 関数は、fTimeKey パラメータにより関数に渡された内部カウント値に基づいて、y 軸を中心とする回転を反映させるため、Direct3D がジオメトリに適用するワールド行列を更新するだけである。回転は、1 フレームにつき一度だけ適用されるため、結果として、モデルが所定の位置で回転しているように見える。
HRESULT App_FrameMove( LPDIRECT3DDEVICE7 pd3dDevice, FLOAT fTimeKey ) { // この単純なチュートリアルでは、三角形を y 軸を中心として回転させる。 // そのためには、新しいワールド座標トランスフォームとして、回転を決定する 4×4 行列を設定するだけである。 D3DMATRIX matSpin; matSpin._11 = matSpin._22 = matSpin._33 = matSpin._44 = 1.0f; matSpin._12 = matSpin._13 = matSpin._14 = matSpin._41 = 0.0f; matSpin._21 = matSpin._23 = matSpin._24 = matSpin._42 = 0.0f; matSpin._31 = matSpin._32 = matSpin._34 = matSpin._43 = 0.0f; matSpin._11 = (FLOAT)cos( fTimeKey ); matSpin._33 = (FLOAT)cos( fTimeKey ); matSpin._13 = -(FLOAT)sin( fTimeKey ); matSpin._31 = (FLOAT)sin( fTimeKey ); pd3dDevice->SetTransform( D3DTRANSFORMSTATE_WORLD, &matSpin ); return S_OK; }
もちろん、実際のアプリケーションでは、単一のモデルに対して回転を適用する以外にも多数の処理を行う。(回転行列の詳細については、「3D トランスフォーム」の「回転」を参照すること)。
シーンのジオメトリを更新したら、次はそのジオメトリをレンダリング ターゲット サーフェスにレンダリングする。サンプル Triangle では、この処理を「ステップ 5.2 : シーンをレンダリングする」で行う。