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:
Dans le meme ordre exctement.
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); }
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 :
avant de commencer a dessiner les vertex...
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);
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?
Partager