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);
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);