Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





acerca de la luz

Iniciado por xeex, 20 de Diciembre de 2007, 11:57:17 PM

« anterior - próximo »

xeex

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.

misscelan

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.

xeex

gracias misscelan
No he probado pero lo que me dices tiene muxo sentido.
Debe ser eso...
GRACIAS.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.