IDirect3DDevice9::GetLight

このデバイスで使用する一連のライティング プロパティを取得します。

HRESULT 
GetLight(
  DWORD Index,
  D3DLight9 * pLight
);

パラメータ

  • Index
    取得するライト プロパティ セットの 0 から始まるインデックス。IDirect3DDevice9::SetLight メソッドの呼び出しによってこのインデックスのライト プロパティが設定されていない場合、このメソッドは失敗します。
  • pLight
    取得したライト パラメーター セットを格納する D3DLIGHT9 構造体へのポインターです。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、D3DERR_INVALIDCALL を返します。

解説 

このメソッドは、D3DCREATE_PUREDEVICE 定数を使って作成されたデバイスのデバイス ステートを返しません。このメソッドを使用するには、D3DCREATE にその他の値を指定してデバイスを作成する必要があります。

デバイスに対して IDirect3DDevice9::GetLight メソッドを呼び出して、既存の光源のすべてのプロパティを取得します。IDirect3DDevice9::GetLight メソッドを呼び出すときは、プロパティを取得する光源の 0 から始まるインデックスを最初のパラメーターとして渡し、D3DLIGHT9 構造体のアドレスを指定します。デバイスは、そのインデックスで光源に使用する光源のプロパティを D3DLIGHT9 構造体に記述します。

 // Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface. HRESULT hr; D3DLight9 light;      // Get the property information for the first light. hr = pd3dDevice->GetLight(0, &light); if (SUCCEEDED(hr))     // Handle Success else     // Handle failure 

デバイスで割り当てられた光源の範囲外のインデックスを指定すると、IDirect3DDevice9::GetLight メソッドは失敗し、D3DERR_INVALIDCALL を返します。

シーンの光源の一連のライト プロパティを割り当てるときは、デバイスに対して IDirect3DDevice9::LightEnable メソッドを呼び出すことで光源をアクティブにすることができます。新しい光源は既定では無効です。IDirect3DDevice9::LightEnable メソッドは、2 つのパラメーターを受け取ります。最初のパラメーターはメソッドの対象の光源の 0 から始まるパラメーターに設定し、2 番目のパラメーターを TRUE に設定してライトを有効にし、FALSE に設定して無効にします。次のコード サンプルは、デバイスの光源プロパティのリストにある最初の光源を有効にすることでこのメソッドの使用方法を示しています。

 // Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface. HRESULT hr;      hr = pd3dDevice->LightEnable(0, TRUE); if (SUCCEEDED(hr))     // Handle Success else     // Handle failure 

デバイスの能力を取得して、そのデバイスでサポートされるアクティブなライトの最大数を判定するには、D3DCAPS9 構造体の MaxActiveLights メンバーを確認します。

IDirect3DDevice9::SetLight で設定されたプロパティを持たないライトを有効または無効にするには、IDirect3DDevice9::LightEnable メソッドで以下の表に示されているプロパティを使用して光源を作成し、ライトを有効または無効にします。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容

関連項目

IDirect3DDevice9::SetLight, IDirect3DDevice9::GetLightEnable, IDirect3DDevice9::LightEnable