Programacion Opengl

Iniciado por latinoalfredo, 5 Mayo 2014, 23:20 PM

0 Miembros y 1 Visitante están viendo este tema.

latinoalfredo

Hola, necesito orientacion acerca del funcionamiento de las luces en Opengl.
He conseguido definir sus propiedades, en esto caso cree una luz direccional pero no consigo que apunte hacia donde yo quiero. Esta siempre se queda fija mirando hacia -z.
Con esta funcion puedo mover el foco a donde quiera:
   glLightfv(GL_LIGHT0, GL_POSITION, LuzPos);
Pero esta funcion que en principio es para dirigir el foco, ignora lo que le ponga. Hay alguna razon por la que pase esto.
   glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, SpotDir);

Las luces las inicializo asi:

GLfloat LuzPos[] = { 0, 0, 0, 1 };
GLfloat SpotDir[] = { 0, 10, 0 };
GLfloat Ambient[] = { 0.2f, 0.2f, 0.2f, 1.0f };
GLfloat Diffuse[] = { 1, 0, 0, 0.0f };
GLfloat SpecRef[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat Specular[] = { 1.0f, 1, 1, 1.0f };

   glLightfv(GL_LIGHT0, GL_DIFFUSE, Diffuse);
   glLightfv(GL_LIGHT0, GL_SPECULAR, Specular);
   glLightfv(GL_LIGHT0, GL_AMBIENT, Ambient);
   glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 100.0f);
   glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 100.0f);
   glLightfv(GL_LIGHT0, GL_POSITION, LuzPos);
   glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, SpotDir);
   glEnable(GL_LIGHT0);
   glEnable(GL_LIGHTING);
   glMaterialfv(GL_FRONT, GL_SPECULAR, SpecRef);
   glMaterialf(GL_FRONT, GL_SHININESS, 100);

Miseryk

En DirectX la luz se refleja en el material y depende cuantos vertex tenga, va a proyectarse mejor (más visible), pero sí o sí se debe aplicar a un material, supongo que en opengl debe ser lo mismo.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!