Platform SDK: DirectX

マテリアル プロパティの設定

Direct3D レンダリング デバイスでは、一度に 1 つのマテリアル プロパティのセットでレンダリングできる。

[C++]

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]

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