IDirect3DDevice9::SetLight-Methode (d3d9helper.h)
Weist diesem Gerät eine Reihe von Beleuchtungseigenschaften zu.
Syntax
HRESULT SetLight(
[in] DWORD Index,
[in] const D3DLIGHT9 *unnamedParam2
);
Parameter
[in] Index
Typ: DWORD
Nullbasierter Index der festzulegenden Beleuchtungseigenschaften. Wenn an diesem Index eine Reihe von Beleuchtungseigenschaften vorhanden ist, wird dieser von den neuen Eigenschaften überschrieben, die in pLight angegeben sind.
[in] unnamedParam2
Typ: const D3DLIGHT9*
Zeiger auf eine D3DLIGHT9-Struktur , die die festzulegenden Beleuchtungsparameter enthält.
Rückgabewert
Typ: HRESULT
Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert D3DERR_INVALIDCALL werden.
Hinweise
Legen Sie Lichteigenschaften fest, indem Sie eine D3DLIGHT9-Struktur vorbereiten und dann die IDirect3DDevice9::SetLight-Methode aufrufen. Die IDirect3DDevice9::SetLight-Methode akzeptiert den Index, an dem das Gerät den Satz der Lichteigenschaften in seiner internen Liste der Lichteigenschaften platzieren soll, sowie die Adresse einer vorbereiteten D3DLIGHT9 Struktur, die diese Eigenschaften definiert. Sie können IDirect3DDevice9::SetLight mit neuen Informationen aufrufen, um die Beleuchtungseigenschaften des Lichts zu aktualisieren.
Das System weist bei jedem Aufruf der IDirect3DDevice9::SetLight-Methode mit einem Index, dem nie Eigenschaften zugewiesen wurden, Arbeitsspeicher zu, um eine Reihe von Beleuchtungseigenschaften aufzunehmen. Anwendungen können eine Reihe von Lichtern festlegen, wobei jeweils nur eine Teilmenge der zugewiesenen Lichter aktiviert ist. Überprüfen Sie den MaxActiveLights-Member der D3DCAPS9-Struktur , wenn Sie Gerätefunktionen abrufen, um die maximale Anzahl aktiver Lichter zu ermitteln, die von diesem Gerät unterstützt werden. Wenn Sie eine Led nicht mehr benötigen, können Sie sie deaktivieren oder mit einem neuen Satz von Lichteigenschaften überschreiben.
Im folgenden Beispiel werden Eigenschaften für ein weißes Punktlicht vorbereitet und festgelegt, dessen emittiertes Licht nicht über die Entfernung abschwächt.
// 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
Aktivieren Sie eine Lichtquelle, indem Sie die IDirect3DDevice9::LightEnable-Methode für das Gerät aufrufen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d9helper.h (include D3D9.h) |
Bibliothek | D3D9.lib |