Nada, he intentado de todo y no hay manera, dejaré el juego sin luces.
Ya para la siguiente versión, si la hago, usaré shaders.
Gracias por todo.
Ya para la siguiente versión, si la hago, usaré shaders.
Gracias por todo.
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenuCita de: tamat en 09 de Noviembre de 2009, 10:19:18 PM
la luz especular es una luz que se ve afectada por la posicion de la camara, prueba a desactivarla y ver si sucede lo mismo.
Por otra parte, no entiendo muy bien esa matriz modelview que usas, pero supongo que eso lo tienes bien.
const GLfloat lightAmbient[] = {0.2, 0.2, 0.2, 1.0};
const GLfloat lightDiffuse[] = {1.0, 0.6, 0.0, 1.0};
const GLfloat matAmbient[] = {0.6, 0.6, 0.6, 1.0};
const GLfloat matDiffuse[] = {1.0, 1.0, 1.0, 1.0};
const GLfloat matSpecular[] = {1.0, 1.0, 1.0, 1.0};
const GLfloat lightPosition[] = {0.0, 0.0, 1.0, 0.0};
const GLfloat lightShininess = 100.0;
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, matAmbient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, matDiffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, matSpecular);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, lightShininess);
glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmbient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuse);
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
glMatrixMode(GL_MODELVIEW);
//float mat[4*4]={ -CamMatrix->iM[0], -CamMatrix->iM[1], -CamMatrix->iM[2], -CamMatrix->iM[3],
// -CamMatrix->iM[4], -CamMatrix->iM[5], -CamMatrix->iM[6], -CamMatrix->iM[7],
// CamMatrix->iM[8], CamMatrix->iM[9], CamMatrix->iM[10], CamMatrix->iM[11],
// 0, 0, 0, -1 };
float mat[4*4]={ CamMatrix->iM[0], CamMatrix->iM[4], -CamMatrix->iM[ 8], 0,
CamMatrix->iM[1], CamMatrix->iM[5], -CamMatrix->iM[ 9], 0,
CamMatrix->iM[2], CamMatrix->iM[6], -CamMatrix->iM[10], 0,
CamMatrix->iM[3], CamMatrix->iM[7], -CamMatrix->iM[11], 1 };
glLoadMatrixf( mat );
glPushMatrix();
//glLoadIdentity(); glPushMatrix();
float lightPosition[] = {0.0f, 2.0f, 1.0f, 0.0f};
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);