Bonjour,
Alors voila, mon probleme est qu'il semble que seulement la couleur du matériel semble fonctionner , et la couleur ambiante.
Je mexplique:
En fait, jai un shere 3d (glutSolidSphere), et japplique sur celle ci une lumiere avec un parametre AMBIANT, DIFFUSE, et SPECULAR.
Mais la sphere est bleu, et seulement a cause que le materiel est bleu!!
Comme un code vos mille mots:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void InitLight()
{
float ambiant[] = {1.0,1.0,1.0,1.0};
float diffuse[] = {1.0,1.0,1.0,1.0};
'' meme chose pr specular...float specular[]...
GLfloat position[] = {0.0 ,0.0 ,3.0 , 1.0f };
 
glLightfv(GL_LIGHT0,GL_AMBIANT,ambiant);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse);
'' meme chose , pour specular (exactement les meme valeur)'
glLightfv(GL_LIGHT0, GL_POSITION, position);
 
 
//valeur ambiante globale
GLfloat global_ambient[] = { 1.0, 1.0, 0.0, 1.0 };
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient);
 
glEnable(GL_LIGHT0);
}
Dans le meme ordre exctement.
Cette routine (InitLight) est appeller juste avant le main loop de openGL.

A savoir aussi :
A chaque appelle de Display() , qui est mon callback de 'desisnage' que OpenGl appelle lorsqu'il est Idle, je fait un call a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
float mcolor[] = {0.0, 0.0 ,1.0 ,1.0}; //bleu
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mcolor);
avant de commencer a dessiner les vertex...


et voila, le résultat est une sphere BLEU claire, en fait,du bleu, du pur RGB(0,0,255), ou du moin, tres tres proche.
Il en resulte un rond bleu 2d tres moche...


qqun peut maider svp?