IDirect3DDevice9::GetLight 方法 (d3d9helper.h)

检索此设备使用的一组照明属性。

语法

HRESULT GetLight(
  [in]  DWORD     Index,
  [out] D3DLIGHT9 *unnamedParam2
);

参数

[in] Index

类型: DWORD

设置为检索的照明属性的从零开始的索引。 如果尚未通过调用 IDirect3DDevice9::SetLight 方法为此索引设置照明属性,则此方法将失败。

[out] unnamedParam2

类型: D3DLight9*

指向用检索到的 lighting-参数集填充的 D3DLIGHT9 结构的指针。

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果 方法失败,则可以D3DERR_INVALIDCALL返回值。

备注

此方法不会返回使用 D3DCREATE_PUREDEVICE 创建的设备的设备状态。 如果要使用此方法,则必须使用 D3DCREATE 中的任何其他值创建设备。

通过为设备调用 IDirect3DDevice9::GetLight 方法检索现有光源的所有属性。 调用 IDirect3DDevice9::GetLight 方法时,传递将检索其属性作为第一个参数的光源的从零开始的索引,并提供 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 方法接受两个参数。 将第一个参数设置为受 方法影响的光源的从零开始的索引,并将第二个参数设置为 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 方法将创建具有下表中列出的属性的光源并启用或禁用它。

要求

   
目标平台 Windows
标头 d3d9helper.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

IDirect3DDevice9

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable

IDirect3DDevice9::SetLight