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

Weitere Informationen

IDirect3DDevice9

IDirect3DDevice9::GetLight

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable