Platform SDK: DirectX |
Direct3D レンダリング デバイスでは、一度に 1 つのマテリアル プロパティのセットでレンダリングできる。
C++ アプリケーションの場合、システムで使用するマテリアル プロパティを設定するには、D3DMATERIAL7 構造体を用意し、次に IDirect3DDevice7::SetMaterial メソッドを呼び出す。
D3DMATERIAL7 構造体を用意するには、この構造体にプロパティ情報を設定して、レンダリングでの希望のエフェクトを作成する。次のコードは、白色のスペキュラ ハイライトがある、紫色のマテリアル用の D3DMATERIAL7 構造体を設定する。
D3DMATERIAL7 mat; // ディフューズ反射を表す RGBA を設定する。 mat.dcvDiffuse.r = (D3DVALUE)0.5; mat.dcvDiffuse.g = (D3DVALUE)0.0; mat.dcvDiffuse.b = (D3DVALUE)0.5; mat.dcvDiffuse.a = (D3DVALUE)1.0; // アンビエント反射を表す RGBA を設定する。 mat.dcvAmbient.r = (D3DVALUE)0.5; mat.dcvAmbient.g = (D3DVALUE)0.0; mat.dcvAmbient.b = (D3DVALUE)0.5; mat.dcvAmbient.a = (D3DVALUE)1.0; // スペキュラ ハイライトの色とシャープさを設定する。 mat.dcvSpecular.r = (D3DVALUE)1.0; mat.dcvSpecular.g = (D3DVALUE)1.0; mat.dcvSpecular.b = (D3DVALUE)1.0; mat.dcvSpecular.a = (D3DVALUE)1.0; mat.dvPower = (float)50.0;
D3DMATERIAL7 構造体を用意したら、レンダリング デバイスの IDirect3DDevice7::SetMaterial メソッドを呼び出してこの構造体を適用する。このメソッドには、用意した D3DMATERIAL7 構造体のアドレスを唯一のパラメータとして指定する。デバイスのマテリアル プロパティの更新が必要なときは、新しい情報で SetMaterial を呼び出すことができる。次の例は、以上の処理をコードで示す。
// このコードでは、このトピックの前の例で mat 変数に対して定義した // マテリアル プロパティを使用する。lpd3dDev は、IDirect3DDevice7 インターフェイスへの // 有効なポインタである。 HRESULT hr; hr = lpd3dDev->SetMaterial(&mat); if(FAILED(hr)) { // エラー処理コード }
Visual Basic の場合、システムで使用するマテリアル プロパティを設定するには、D3DMATERIAL7 型を用意し、次に Direct3DDevice7.SetMaterial メソッドを呼び出す。
D3DMATERIAL7 型を用意するには、この型にプロパティ情報を設定して、レンダリングでの希望のエフェクトを作成する。次のコードは、白色のスペキュラ ハイライトがある、紫色のマテリアル用の D3DMATERIAL7 型を設定する。
Dim mat As D3DMATERIAL7 ' ディフューズ反射を表す RGBA を設定する。 mat.diffuse.r = 0.5 mat.diffuse.g = 0# mat.diffuse.b = 0.5 mat.diffuse.a = 1# ' アンビエント反射を表す RGBA を設定する。 mat.ambient.r = 0.5 mat.ambient.g = 0# mat.ambient.b = 0.5 mat.ambient.a = 1# ' スペキュラ ハイライトの色とシャープさを設定する。 mat.specular.r = 1# mat.specular.g = 1# mat.specular.b = 1# mat.specular.a = 1# mat.power = 50#
D3DMATERIAL7 型を用意したら、レンダリング デバイスの Direct3DDevice7.SetMaterial メソッドを呼び出してこの構造体を適用する。このメソッドには、用意した D3DMATERIAL7 型のアドレスを唯一のパラメータとして指定する。デバイスのマテリアル プロパティの更新が必要なときは、新しい情報で SetMaterial を呼び出すことができる。次の例は、以上の処理をコードで示す。
' このコードでは、このトピックの前の例で mat 変数に対して定義した ' マテリアル プロパティを使用する。d3dDev には、Direct3DDevice7 オブジェクトへの ' 有効な参照が格納されているとする。 On Local Error Resume Next Call d3dDev.SetMaterial(mat) If Err.Number <> DD_OK Then ' エラー処理コード End If