Microsoft DirectX 8.0 (Visual Basic)

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

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

Microsoft® Visual Basic® アプリケーションの場合、システムで使用するマテリアル プロパティを設定するには、D3DMATERIAL8 型を用意し、次に Direct3DDevice8.SetMaterial メソッドを呼び出す。

D3DMATERIAL8 型を用意するには、この型にプロパティ情報を設定して、レンダリングでの目的のエフェクトを作成する。次のコードは、シャープな白色のスペキュラ ハイライトがある、紫色のマテリアル用の D3DMATERIAL8 型を設定する。

Dim mat As D3DMATERIAL8

' ディフューズ反射を表す 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#

' RGBA エミッション色を設定する。
mat.Emissive.r = 0#
mat.Emissive.g = 0#
mat.Emissive.b = 0#
mat.Emissive.a = 0#

D3DMATERIAL8 型を用意したら、レンダリング デバイスの Direct3DDevice8.SetMaterial メソッドを呼び出してこの構造体を適用する。このメソッドには、用意した D3DMATERIAL8 型のアドレスを唯一のパラメータとして指定する。デバイスのマテリアル プロパティの更新が必要なときは、新しい情報で SetMaterial を呼び出すことができる。以上の処理を次のサンプル コードに示す。

' このコードでは、このトピックの前の例で変数 mat に対して定義した
' マテリアル プロパティを使用する。d3dDevice には
' Direct3DDevice8 への有効な参照が格納されていると仮定している。

On Local Error Resume Next

Call d3dDevice.SetMaterial(mat)
If Err.Number <> D3D_OK Then
    ' エラー処理コード。
End If

Direct3D デバイスを作成する場合は、以下の表に示すように現在のマテリアルは自動的にデフォルトに設定される。

メンバ
Diffuse (R:1, G:1, B:1, A:0)
Specular (R:0, G:0, B:0, A:0)
Ambient (R:0, G:0, B:0, A:0)
Emissive (R:0, G:0, B:0, A:0)
Power (0.0)