Hi,
If we are to press keys on the board and change certain things in the display, we use glutPostRedisplay(),
similarly how are we to control changes in the light and color settings in the init() function…
They are’nt recomputed by
glutPostRedisplay()…so how can we control that?
You put the code that you want to change elsewhere. Init() is just meant to initialize the stuff you’ll want to keep that way or initialize with some values that you change later. Maybe make your light settings global and change the settings in display().
redisplay causes display() to be called, eventually. Or you could change the light settings from where you call the redisplay.
I try to but then it gives me a syntax error:
All i wanna do is change the spot light direction:
So in my keyboard function i have code like:
case ‘u’:
angle = 35;
spot_direction[] = { 1.3, 0.4, -10.0};
glutPostRedisplay();
break;
But it gives my as syntax error for spot direction…I dont see anything wrong with the syntax though…
The init() is used to set everything into a known state.
If you set the light state inside of init() it will not change until you call light function somewhere else.
You could put them in your display routine
example:
void display()
{
glLightfv(GL_LIGHT1 ,GL_POSITION, LightPosition); // when ever LightPosition variable is changed so it the light position.
then in your keyboard:
case: ‘L’ // light on
glEnable(GL_LIGHT1
break;
case: ‘P’ // Set light position
LightPosition[0] = x;
LightPosition[1] = y;
LightPosition[2] = z;
break;
Originally posted by lara:
[b]Hi,
If we are to press keys on the board and change certain things in the display, we use glutPostRedisplay(),
similarly how are we to control changes in the light and color settings in the init() function…
They are’nt recomputed by
glutPostRedisplay()…so how can we control that?
Thanks[/b]
[This message has been edited by nexusone (edited 11-15-2002).]