Lights not working ? :S

Started by
3 comments, last by Namethatnobodyelsetook 16 years, 11 months ago
goday! my second post on one day.... well just tell me whats wrong whit this code becus it dont work! and i have just ript it from my bok and thats not Either working! and its driving me insane =)

void Light::SpotLight()
{
	D3DLIGHT9 light;

	light.Type = D3DLIGHT_SPOT;
	D3DXVECTOR3 vDir (0.0f, 0.0f,0.0f);
	D3DXVec3Normalize((D3DXVECTOR3*)&light.Direction, &vDir);
	light.Position = D3DXVECTOR3 ( 5.0f,5.0f,-5.0f);
	light.Diffuse.b = 255.0f;
	light.Diffuse.g = 255.0f;
	light.Diffuse.r = 255.0f;
	light.Ambient.b =255.0f;
	light.Ambient.g = 255.0f;
	light.Ambient.r =255.0f;
	light.Range = 7.0f;
	light.Phi=1.0f;
	light.Falloff=0.5f;
	light.Theta =2.0f;

	pd3dDevice->SetLight(0, &light);
	pd3dDevice->LightEnable(0, TRUE);
}

Advertisement
What does "not working" actually mean? Does it crash? Is something not drawing the way you expect? if so, what is it you expect, and what is the output?

Did you actually read the section of the book you took the code from? Know what they were trying to do there?
Sirob Yes.» - status: Work-O-Rama.
Direction is 0,0,0, which won't work. You need attenuation values. Light colors are usually expressed as 0 to 1, not 255. Ambient in your light, while supported, is just odd.

Also be aware you need a material (D3DMATERIAL9, SetMaterial), and your vertices need normals.
well i first created a Point light and that whats im want to work right now! and why i posted a code on a Spotlight is becus i ript it from the book and it dident work!

so in a pointLight, do i need normals and olor values at 0.0f-1.0f, and not a direction to 0.0f,0.0f,0.0f?
For a point light you don't need the direction, but you do need attenuation, and your vertices need normals. Fixing the colors isn't strictly necessary for any lights, but, why not fix it? It's quick.

This topic is closed to new replies.

Advertisement