Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。
基本的な 3D レンダリング オブジェクト (DirectDraw オブジェクト、レンダリング デバイス、およびビューポート) を作成すると、単純なシーンをレンダリングするのに必要なすべてのものが、ほぼ揃ったことになる。次にすることは、初期ライティング ステートを設定し、マテリアルを作成および構成することである。設定はすべて、必要に応じて、後で変更することができる。概念的な説明については、「ライティングとマテリアル」を参照すること。
次のコードは、Direct3DDevice7.SetRenderState メソッドを呼び出して、初期ライティング ステートをレンダリング デバイス g_d3dDevice に適用する。
g_d3dDevice.SetRenderState D3DRENDERSTATE_AMBIENT, _ g_dx.CreateColorRGBA(1#, 1#, 1#, 1#)
最初のパラメータ、SetRenderState は、D3DRENDERSTATE_AMBIENT フラグを渡し、この呼び出しをシーンのアンビエント ライトの色設定と関連付ける。2 番目の引数では、DirectX7.CreateColorRGBA メソッドを使用して、アンビエント ライトの赤、緑、青のカラー値を、それぞれ 1.0 に設定する。この結果得られたライティングは、白色光を放射する。ライティングではアルファ成分を使用しない。上記のコードでは、アルファ値も 1.0 に設定されている。
D3DMATERIAL7 型を使って、マテリアルのプロパティを指定する。
Dim mtrl As D3DMATERIAL7 mtrl.Ambient.r = 1#:mtrl.Ambient.g = 1#:mtrl.Ambient.b = 0# ' マテリアルをデバイスにコミットする。 g_d3dDevice.SetMaterial mtrl
作成された新しいマテリアルにはプロパティがないので、レンダリングには使用できない。上記のコードでは、アンビエント ライトの赤と緑の要素を反射するマテリアルを記述し、シーン内ではそのマテリアルを黄色で表す D3DMATERIAL7 型のマテリアル プロパティを設定している (サンプル Triangle では、アンビエント ライトだけを使用するので、アンビエント反射率プロパティだけを設定する。実際のアプリケーションでは、アンビエント ライトだけでなくダイレクト ライトも使用するので、ディフューズおよびスペキュラ反射率のプロパティも設定する必要がある)。
注 : テクスチャを使用する場合、オブジェクト マテリアルは通常省略されるか白色にされる。
ここで、マテリアル、および初期ライティング パラメータが設定されたので、サンプル Triangle は、座標トランスフォーム行列のセット アップに進む。これについては、「ステップ 3.2 : 座標トランスフォーム行列を準備、設定する」で説明する。