- PointLight-Struktur initialisiert (ZeroMemory, memset...)?
- Farben (Diffuse etc.) angegeben?
- Die Werte von Phi und Theta würde ich vertauschen
- Spotlights haben eine Position
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
D3DLIGHT9 PointLight;
ZeroMemory( &PointLight, sizeof(D3DLIGHT9) );
PointLight.Type = D3DLIGHT_SPOT;
PointLight.Diffuse.r = 1.0f;
PointLight.Diffuse.g = 1.0f;
PointLight.Diffuse.b = 1.0f;
PointLight.Diffuse.a = 1.0f;
PointLight.Position = tbVector3(0.0f, 5.0f, -10.0f);
PointLight.Direction = tbVector3(1.0f, -0.5f, 0.0f);
PointLight.Range = 1.0f;
PointLight.Theta = 0.5f;
PointLight.Phi = 1.0f;
PointLight.Falloff = 1.0f;
PointLight.Attenuation0 = 1.0f;
g_pD3DDevice->SetLight( 0, &PointLight );
g_pD3DDevice->LightEnable( 0, TRUE );
|
Das Setup für das Licht würde ich aus Performance-Gründen auslagern.
Zum Beispiel in eine Init-Funktion respektive vor deiner Render-Funktion.