アプリケーションは、マテリアルオブジェクトと互いにやり取りするためにIDirect3DRMMaterial2インターフェイスのメソッドを使用する。
マテリアルでは、サーフェスがどのように光を反射するかを定義する。マテリアルには、放射プロパティ(光を放射するかどうか)と反射プロパティの2つの要素があり、その輝度は強度設定によって決まる。指数の値は反射するハイライトの鋭さを決め、5の値は金属の外観を与え、より大きい値はよりプラスチック的な外観を与える。
アプリケーションは、GetEmissiveとSetEmissiveメソッドを使用してマテリアルの放射を、GetSpecularとSetSpecularメソッドを使用して反射要素を、GetPowerとSetPowerメソッドを使用して指数を制御することができる。
Microsoft DirectX version 6.0は、IDirect3DRMMaterial2インターフェイスを導入している。IDirect3DRMMaterial2は、マテリアルプロパティに対するより洗練された制御を可能にするGetAmbientとSetAmbientメソッドを追加することで、それが置換する旧のIDirect3DRMMaterialインターフェイスを拡張する。IDirect3DRMMaterialについては、アンビエントカラーを修正することはできず、常に面の色と等しくなる。IDirect3DRMMaterial2オブジェクトは、SetAmbientが呼び出されるまで、オブジェクトの面の色をアンビエントカラーとして使用する。Direct3D保持モードインターフェイスの履歴については、「インターフェイスの変更点」を参照すること。
IDirect3DRMMaterial2インターフェイスのメソッドは、以下のグループにまとめることができる。
アンビエント | GetAmbient |
SetAmbient | |
放射 | GetEmissive |
SetEmissive | |
反射指数の | GetPower |
指数 | SetPower |
反射 | GetSpecular |
SetSpecular | |
すべてのCOMインターフェイスと同様、IDirect3DRMMaterial2インターフェイスはIUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは、以下の3つのメソッドをサポートする。
AddRef |
QueryInterface |
Release |
さらに、IDirect3DRMMaterial2インターフェイスは、IDirect3DRMObjectインターフェイスから次のメソッドを継承する。
AddDestroyCallback |
Clone |
DeleteDestroyCallback |
GetAppData |
GetClassName |
GetName |
SetAppData |
SetName |
Direct3DRMMaterialオブジェクトは、IDirect3DRM3::CreateMaterialメソッドの使用によって取得される。
マテリアルの現在のアンビエント値を取得する。
構文
HRESULT GetAmbient( LPD3DVALUE lpdvRed, LPD3DVALUE lpdvGreen, LPD3DVALUE lpdvBlue);
パラメータ
- lpdvRed
- アンビエントカラーの赤要素がセットされる。
- lpdvGreen
- アンビエントカラーの緑要素がセットされる。
- lpdvBlue
- アンビエントカラーの青要素がセットされる。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
マテリアルの放射プロパティの設定を取得する。このプロパティの設定は、色とオブジェクトが発散する光の指数を示す。
構文
HRESULT GetEmissive(
D3DVALUE *lpr,
D3DVALUE *lpg,
D3DVALUE *lpb
);
パラメータ
- lpr, lpg, lpb
- メソッドが制御を返すとき、放射の赤、緑、青の色要素を受け取るアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
指定されたマテリアルでの反射指数の強度を取得する。
構文
D3DVALUE GetPower( );
戻り値
反射指数の指数を示す値を返す。
参照
マテリアルの反射ハイライトの色を取得する。
構文
HRESULT GetSpecular(
D3DVALUE *lpr,
D3DVALUE *lpg,
D3DVALUE *lpb
);
パラメータ
- lpr, lpg, lpb
- メソッドが制御を返すとき、反射ハイライトの赤、緑、青の色要素を受け取るアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
マテリアルのアンビエント値を設定する。デフォルトは拡散色である。拡散色とは、サーフェスの乱反射する(つやのない)色のことである。
構文
HRESULT SetAmbient( D3DVALUE dvRed, D3DVALUE dvGreen, D3DVALUE dvBlue);
パラメータ
- dvRed
- アンビエントカラーの赤要素。
- dvGreen
- アンビエントカラーの緑要素。
- dvBlue
- アンビエントカラーの青要素。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
マテリアルの放射プロパティを設定する。
構文
HRESULT SetEmissive(
D3DVALUE r,
D3DVALUE g,
D3DVALUE b
);
パラメータ
- r, g, b
- 放射の色の赤、緑、青要素。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、Direct3DRMMaterialInterpolatorオブジェクトに放射プロパティキーを追加するためにも使用する。
参照
マテリアルの反射指数の強度を設定する。
構文
HRESULT SetPower(
D3DVALUE rvPower
);
パラメータ
- rvPower
- 新しい反射指数。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、Direct3DRMMaterialInterpolatorオブジェクトに反射指数キーを追加するためにも使用する。
参照
マテリアルの反射ハイライトの色を設定する。
構文
HRESULT SetSpecular(
D3DVALUE r,
D3DVALUE g,
D3DVALUE b
);
パラメータ
- r, g, b
- 反射ハイライトの色の赤、緑、青の各要素。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、Direct3DRMMaterialInterpolatorオブジェクトに反射カラーキーを追加するためにも使用する。
参照
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.