Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: xeex en 20 de Diciembre de 2007, 11:57:17 PM

Título: acerca de la luz
Publicado por: xeex en 20 de Diciembre de 2007, 11:57:17 PM
hola,
estaba retomando el tema de las luces, pero me entro una duda.

tengo algo asi:

void luz ()
  {
     glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmb);        
     glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDif);      
     glLightfv(GL_LIGHT0, GL_SPECULAR,LightSpc);    
     glLightfv(GL_LIGHT0, GL_POSITION,LightPos);      
     glLightfv(GL_LIGHT0, GL_SPOT_CUTOFF, &SPOT_CUTOFF);
     glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);        
  }

void display ()
  {      
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glLoadIdentity ();
     camera();

     /*estas 2 lineas las tengo que agregar*/
     glLightfv(GL_LIGHT0, GL_POSITION,LightPos);      
     glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);

     glEnable(GL_LIGHT0);                              
     glEnable(GL_LIGHTING);
     terreno();//funcion de dibujado
     glDisable(GL_LIGHTING);
     glFlush();
  }

main()
  {
     luz();
     do
        {
           display();
        }while(!tecla(esc));
  }


mi probblema es el siguiente.
Si no pongo estas 2 lineas:

      glLightfv(GL_LIGHT0, GL_POSITION,LightPos);      
      glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);


en la funcion display, se me produce un efecto de iluminacion como el de una linterna, es decir, a medida que avanzo la luz se mueve conmigo.

¿por que pasa esto?
¿por que tengo que declarar de nuevo esas 2 lineas si ya las habia declarado anteriormente en la funcion luz() antes del loop principal?

adios y gracias.
Título: acerca de la luz
Publicado por: misscelan en 21 de Diciembre de 2007, 01:19:08 AM
Cuando fijas la posición de la luz éste se multiplica por la modelview en ese momento.

Fijate si tiene la misma modelview en los dos momentos antes fijar la posición.

Un saludo.
Título: acerca de la luz
Publicado por: xeex en 21 de Diciembre de 2007, 08:23:05 PM
gracias misscelan
No he probado pero lo que me dices tiene muxo sentido.
Debe ser eso...
GRACIAS.