Lighting (complete darkness not working)

Started by
6 comments, last by mrbig 17 years, 11 months ago
I'm having trouble getting rid of all lighting in a scene (ie, I want the screen completely black). There always seems to be a very low ambient light in the scene. I first tried setting the ambient and diffuse settings to black, that didn't work. I then disabled all 8 light sources (0-7) but still have the same problem. Setting material properties to black fixes the problem, but I don't want everything with a black material (there will be point lights eventually). Any ideas? (this is for opengl in case you didn't notice which forum it's in)
Advertisement
Can you provide some code/screenshots?
This is some test code to make sure everything is off:
	static GLfloat dummy[4] = {0.0, 0.0, 0.0, 1.0};	for( int i = GL_LIGHT0; i <= GL_LIGHT7; i++ )	{		glLightfv(i, GL_AMBIENT, dummy);		glLightfv(i, GL_DIFFUSE, dummy);		glLightfv(i, GL_POSITION,dummy);		glLightfv(i, GL_SPECULAR,dummy);		glDisable(i);	}

I wouldn't normally iterate through them like this, but I checked the header and they're all in order (this is quick and dirty testing).

I don't know what other source to show you. There's a lot more! If there's anything in particular you'd like to see I'll post it. At this point all light should be completely off, but it's not for some reason.

I'll put some screenshots up after I've tried some things. The only spot I have to put them right now is my google page. All I'm seeing is a very subtle ambient light in the scene, probably close to the opengl default of (0.2, 0.2, 0.2).
Screenshot here:
http://thrump.googlepages.com/home

I'm going to try the nehe lighting tutorial to simplify the problem.
I think for setting the light to black you have to set the fourth light value to 0.0 (i.e. {0.0, 0.0, 0.0, 0.0} ).

Edit: err, I think I'm bein' stupid. :P Heh. Umm, I think I'm thinkin' of something with material properties like you mentioned... Hrm...
This is odd.
'glDisable' should work fine.
Have you tried disabling the lights manually, rather than using a loop?
Strange advice, I know, but try it anyway.

Try replacing '<=' with a '!='.
This is very weird, but I figured it out (sort of).

You wouldn't normally see this behavior, as the default material value for ambient light is 0.2 across the board. (0.8 diffuse). I was setting them both to 1.0. Note: this is the material, not the light I'm setting.

This could be my graphics card, or a driver problem, but even with all lights turned off, there is still a slight ambient light in the scene. I got this behavior even with Nehe's lesson 6. With a material value of 0.2 ambient, it's hardly noticable (but you CAN still see it). With my material ambient of 1.0, it was more obvious.

I'm going to retweak my lighting values to see if I can get it looking good with 0.2 ambient materials. I'll try it on my system at work on Monday to see if it's a gfx card thing.
I was about to ask you to send me your program to see if it has the problem on my system.
Driver bug, I suspect.

This topic is closed to new replies.

Advertisement