次の方法で共有


IDirect3DDevice9::SetLight メソッド (d3d9helper.h)

このデバイスの照明プロパティのセットを割り当てます。

構文

HRESULT SetLight(
  [in] DWORD           Index,
  [in] const D3DLIGHT9 *unnamedParam2
);

パラメーター

[in] Index

種類: DWORD

設定する照明プロパティのセットの 0 から始まるインデックス。 このインデックスに照明プロパティのセットが存在する場合は、pLight で指定された新しいプロパティによって上書きされます。

[in] unnamedParam2

型: const D3DLIGHT9*

設定する照明パラメーターを含む D3DLIGHT9 構造体へのポインター。

戻り値

種類: HRESULT

メソッドが成功した場合、戻り値はD3D_OK。 メソッドが失敗した場合は、戻り値をD3DERR_INVALIDCALLできます。

注釈

D3DLIGHT9構造体を準備し、IDirect3DDevice9::SetLight メソッドを呼び出して、ライト プロパティを設定します。 IDirect3DDevice9::SetLight メソッドは、デバイスがライト プロパティのセットをライト プロパティの内部リストに配置するインデックスと、それらのプロパティを定義する準備されたD3DLIGHT9構造体のアドレスを受け入れます。 ライトのイルミネーション プロパティを更新するために、必要に応じて新しい情報を使用して IDirect3DDevice9::SetLight を呼び出すことができます。

システムは、プロパティが割り当てられていないインデックスを使用して IDirect3DDevice9::SetLight メソッドを呼び出すたびに、照明プロパティのセットに対応するようにメモリを割り当てます。 アプリケーションでは、割り当てられたライトのサブセットのみを一度に有効にして、多数のライトを設定できます。 デバイスの機能を取得するときに 、D3DCAPS9 構造体の MaxActiveLights メンバーを確認して、そのデバイスでサポートされているアクティブ ライトの最大数を確認します。 ライトが不要になった場合は、ライトを無効にするか、新しいライト プロパティ セットで上書きできます。

次の例では、放射された光が遠くで減衰しない白色点光のプロパティを準備および設定します。


// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface.
D3DLIGHT9 d3dLight;
HRESULT   hr;
    
// Initialize the structure.
ZeroMemory(&d3dLight, sizeof(d3dLight));
    
// Set up a white point light.
d3dLight.Type = D3DLIGHT_POINT;
d3dLight.Diffuse.r  = 1.0f;
d3dLight.Diffuse.g  = 1.0f;
d3dLight.Diffuse.b  = 1.0f;
d3dLight.Ambient.r  = 1.0f;
d3dLight.Ambient.g  = 1.0f;
d3dLight.Ambient.b  = 1.0f;
d3dLight.Specular.r = 1.0f;
d3dLight.Specular.g = 1.0f;
d3dLight.Specular.b = 1.0f;
    
// Position it high in the scene and behind the user.
// Remember, these coordinates are in world space, so
// the user could be anywhere in world space, too. 
// For the purposes of this example, assume the user
// is at the origin of world space.
d3dLight.Position.x = 0.0f;
d3dLight.Position.y = 1000.0f;
d3dLight.Position.z = -100.0f;
    
// Don't attenuate.
d3dLight.Attenuation0 = 1.0f; 
d3dLight.Range        = 1000.0f;
    
// Set the property information for the first light.
hr = d3dDevice->SetLight(0, &d3dLight);
if (SUCCEEDED(hr))
    // Handle Success
else
    // Handle failure

デバイスの IDirect3DDevice9::LightEnable メソッドを呼び出して光源を有効にします。

要件

要件
対象プラットフォーム Windows
ヘッダー d3d9helper.h (D3D9.h を含む)
Library D3D9.lib

こちらもご覧ください

IDirect3DDevice9

IDirect3DDevice9::GetLight

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable