Thank you for the answer, I will try using EXT_separate_specular_color instead of GL_SEPARATE_SPECULAR_COLOR.
My hardware is ATI Mobility Radeon 9200 (iBook G4) and OS 10.3.4.
The code I wrote is:
…
glClearColor ( 0.5f , 0.5f , 0.5f , 0.f );
glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
// la caméra
glViewport ( 0 , 0 , _Width , _Height );
glMatrixMode ( GL_PROJECTION );
glLoadIdentity ();
gluPerspective ( 60 , 1 , .01 , 10 );
gluLookAt ( camPos[0] , camPos[1] , camPos[2] ,
target[0] , target[1] , target[2] ,
upVec[0] , upVec[1] , upVec[2] );
glMatrixMode ( GL_MODELVIEW );
glLoadIdentity ();
glEnable ( GL_LIGHTING );
glEnable ( GL_LIGHT0 );
glEnable ( GL_DEPTH_TEST );
glEnable ( GL_CULL_FACE );
glLightfv ( GL_LIGHT0 , GL_POSITION , position );
float white[4] = { 1.f , 1.f , 1.f , 1.f };
glLightfv ( GL_LIGHT0 , GL_SPECULAR , white );
float mAmbient[4] = { .4f , .4f , .4f , 1.f };
glLightModelfv ( GL_LIGHT_MODEL_AMBIENT , mAmbient );
glShadeModel ( GL_SMOOTH );
glTexEnvi ( GL_TEXTURE_ENV , GL_TEXTURE_ENV_MODE , GL_MODULATE );
glEnable ( GL_TEXTURE_2D );
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glEnable ( GL_TEXTURE_GEN_S );
glEnable ( GL_TEXTURE_GEN_T );
glBindTexture ( GL_TEXTURE_2D , tex -> _Name );
glLightModeli ( GL_LIGHT_MODEL_COLOR_CONTROL ,
GL_SEPARATE_SPECULAR_COLOR );
float diffuse[4] = { _Material->_Diffuse.R , _Material->_Diffuse.G , _Material->_Diffuse.B , _Material->_Diffuse.A };
glMaterialfv ( GL_FRONT , GL_DIFFUSE , diffuse );
float ambient[4] = { _Material->_Ambient.R , _Material->_Ambient.G , _Material->_Ambient.B , _Material->_Ambient.A };
glMaterialfv ( GL_FRONT , GL_AMBIENT , ambient );
float emission[4] = { _Material->_Emission.R , _Material->_Emission.G , _Material->_Emission.B , _Material->_Emission.A };
glMaterialfv ( GL_FRONT , GL_EMISSION , emission );
float specular[4] = { _Material->_Specular.R , _Material->_Specular.G , _Material->_Specular.B , _Material->_Specular.A };
glMaterialfv ( GL_FRONT , GL_SPECULAR , specular );
glMateriali ( GL_FRONT , GL_SHININESS , _Material->_Shininess );
GLUquadricObj * sphere = gluNewQuadric();
gluQuadricDrawStyle ( sphere , GLU_FILL );
gluQuadricNormals ( sphere , GLU_SMOOTH );
gluSphere ( sphere , 3.f , 32 , 32 );