Share via


Metodo IDirect3DDevice9::SetLight (d3d9helper.h)

Assegna un set di proprietà di illuminazione per questo dispositivo.

Sintassi

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

Parametri

[in] Index

Tipo: DWORD

Indice in base zero del set di proprietà di illuminazione da impostare. Se esiste un set di proprietà di illuminazione in questo indice, viene sovrascritto dalle nuove proprietà specificate in pLight.

[in] unnamedParam2

Tipo: const D3DLIGHT9*

Puntatore a una struttura D3DLIGHT9 contenente i parametri di illuminazione da impostare.

Valore restituito

Tipo: HRESULT

Se il metodo ha esito positivo, il valore restituito è D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere D3DERR_INVALIDCALL.

Commenti

Impostare le proprietà di luce preparando una struttura D3DLIGHT9 e quindi chiamando il metodo IDirect3DDevice9::SetLight . Il metodo IDirect3DDevice9::SetLight accetta l'indice in corrispondenza del quale il dispositivo deve inserire il set di proprietà di luce nell'elenco interno delle proprietà di luce e l'indirizzo di una struttura D3DLIGHT9 preparata che definisce tali proprietà. È possibile chiamare IDirect3DDevice9::SetLight con nuove informazioni in base alle esigenze per aggiornare le proprietà di illuminazione della luce.

Il sistema alloca la memoria per ospitare un set di proprietà di illuminazione ogni volta che si chiama il metodo IDirect3DDevice9::SetLight con un indice che non è mai stato assegnato. Le applicazioni possono impostare un numero di luci, con solo un subset delle luci assegnate abilitate alla volta. Controllare il membro MaxActiveLights della struttura D3DCAPS9 quando si recuperano le funzionalità del dispositivo per determinare il numero massimo di luci attive supportate da tale dispositivo. Se non hai più bisogno di una luce, puoi disabilitarla o sovrascriverla con un nuovo set di proprietà di luce.

Nell'esempio seguente vengono preparate e impostate le proprietà per una luce a virgola bianca la cui luce generata non attenua la distanza.


// 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

Abilitare una fonte di luce chiamando il metodo IDirect3DDevice9::LightEnable per il dispositivo.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d9helper.h (include D3D9.h)
Libreria D3D9.lib

Vedi anche

IDirect3DDevice9

IDirect3DDevice9::GetLight

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable