Metodo IDirect3DDevice9::SetLight (d3d9.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 . The
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 | d3d9.h (includere D3D9.h) |
Libreria | D3D9.lib |