I am seeing a nasty render problem on the intel x3100 card, under
linux only. The same card works correctly on windows XP. Nvidia and
ATI cards also work correctly under linux. Has anyone noticed this
sort of problem before? Might there be something wrong with my code,
it seems unlikely at the moment though.
Here are some screen shots that show the lighting way out on linux:
http://jason.spashett.com/pics/gltest/
I setup lighting once:
// Setup lighting
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glDisable(GL_COLOR_MATERIAL);
GLfloat Ambient[4] = [0.5f, 0.5f, 0.5f, 1.0f];
GLfloat whiteDiffuse[4] = [1f, 1f, 0.8f, 1.0f];
GLfloat light_position[4] = [5, 10, 10, 0];
glLightfv(GL_LIGHT0, GL_POSITION, &light_position[0]);
glLightfv(GL_LIGHT0, GL_AMBIENT, &Ambient[0]);
glLightfv(GL_LIGHT0, GL_DIFFUSE, &whiteDiffuse[0]);
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,
GL_SEPARATE_SPECULAR_COLOR);
Then when drawing the model:
Before geometry output:
m.texture.bind();
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
And then In a gemetry render loop I use the same material:
// Material properties
GLfloat mat_diffuse[4] = [0.9, 0.9, 0.9, 0];
GLfloat mat_specular[4] = [0.9, 0.9, 0.9, 0];
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, &mat_diffuse[0]);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, &mat_specular[0]);
glMaterialf(GL_FRONT_AND_BACK, GL_****NINESS, 100);
glVertex3f(x, y, z);
NB - Language is Digital Mars D


|