IDirect3DDevice9::GetLight 方法 (d3d9helper.h)

擷取此裝置使用的一組光源屬性。

語法

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

參數

[in] Index

類型: DWORD

要擷取之光源屬性的以零起始的索引。 如果尚未透過呼叫 IDirect3DDevice9::SetLight 方法來設定此索引的光源屬性,這個方法將會失敗。

[out] unnamedParam2

類型: D3DLight9*

已填入所擷取光源參數集之 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)
程式庫 D3D9.lib

另請參閱

IDirect3DDevice9

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable

IDirect3DDevice9::SetLight