Platform SDK: DirectX |
ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「Direct3D 直接モード Visual Basic チュートリアル」を参照すること。
基本的な 3D レンダリング オブジェクト (DirectDraw オブジェクト、レンダリング デバイス、およびビューポート) を作成すると、単純なシーンをレンダリングするのに必要なすべてのものが、ほぼ揃ったことになる。次にすることは、マテリアルを作成、構成し、初期ライティング ステートを設定することである。設定はすべて、必要に応じて、後で変更することができる。概念的な説明については、「ライティングとマテリアル」を参照すること。
サンプル Triangle では、次のようにマテリアル パラメータを設定する。
D3DMATERIAL7 mtrl; ZeroMemory( &mtrl, sizeof(mtrl) ); mtrl.ambient.r = 1.0f; mtrl.ambient.g = 1.0f; mtrl.ambient.b = 0.0f; pd3dDevice->SetMaterial( &mtrl );
上記のコードでは、D3DMATERIAL7 構造体で表すマテリアル プロパティを準備している。また、D3DMATERIAL7 構造体によって、アンビエント ライトの赤および緑成分を反射するマテリアルを記述している。これにより、マテリアルはシーンの中で黄色に見える (このチュートリアルでは、アンビエント ライトだけを使用するので、アンビエント反射率プロパティだけを設定する。実際のアプリケーションでは、アンビエント ライトだけでなくダイレクト ライトも使用するので、ディフューズおよびスペキュラ反射率のプロパティも設定する)。マテリアル プロパティを準備した後、このコードでは、IDirect3DDevice7::SetMaterial メソッドを呼び出してこのプロパティをデバイスに適用している。
注 : テクスチャを使用する場合、オブジェクト マテリアルは通常省略されるか白色にされる。
現在のマテリアルを選択すると、すべてのポリゴンが、このマテリアルを使用してレンダリングされる。ただし、シーン中の何かを可視状態にするには、ライティングを与える必要がある。Triangle アプリケーションでは、白色アンビエント ライトの D3DRENDERSTATE_AMBIENT レンダリング ステートを指定した IDirect3DDevice7::SetRenderState メソッドを呼び出して、アンビエント ライト レベルを設定する。
// アンビエント ライト値は別の状態に設定されている。ここでは、アンビエント ライトを // 完全な白色に設定する。 pd3dDevice->SetRenderState( D3DRENDERSTATE_AMBIENT, 0xffffffff );
ここで、ジオメトリ、マテリアル、および初期ライティング パラメータが設定されたので、サンプル Triangle は、座標トランスフォーム行列のセット アップに進む。これについては、「ステップ 3.3 : 座標トランスフォーム行列を準備、設定する」で説明する。