Prolème pour afficher un carré en openGL

Résolu
vincemail Messages postés 79 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 8 décembre 2006 - 21 févr. 2006 à 22:07
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 22 févr. 2006 à 11:40
Bonjour à tous, je me suis mis à OpenGL depuis peu, et je suis maintenant confronté à un gros problème... voilà, je désire affiché à l'écran un carré grace à GL_TRIANGLE_STRIP, voici mon code :

glBegin(GL_TRIANGLE_STRIP);
for (int i=0; i<4; i++)
{
glTexCoord2d(poin[i].texX, point[i].texY);
glVertex3d(point[i].x,point[i].y,point[i].z);
}
glEnd();

où point[] contient les coordonnées de chacun des 4 points. J'ai ajouté de la lumière et voilà ce que j'obtiens :

Donc de loin tout va bien mais dès que l'on s'approche :

On distingue les deux triangles car l'un des deux se met à s'assombrir... Je ne comprends pas du tout d'où cela vient, d'autant plus que les deux triangles ont exactement la meme normale... J'ai remarqué aussi que les triangles s'éclaircissent ou s'assombrissent uniformément lorsqu'ils sont éclairés alors que l'éclairage devrait se faire autour des vertices surtout... si quelqu'un sait d'où cela vient, je le bénis !!

Merci d'avoir écouté mes misères.
Vincent

3 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 févr. 2006 à 22:37
Pour le problème de l'éclairage uniforme, je sais plus, mais il faut peut etre activer un mode particulier:

glShadeModel(GL_SMOOTH); // et non GL_FLAT par défaut.



Pour ton problème de triangle noir, je vois pas. Post un peu plus de ton code, car la on peut pas dire grand chose.
3
vincemail Messages postés 79 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 8 décembre 2006
21 févr. 2006 à 22:49
apparemment en changeant GL_FLAT par GL_SMOOTH le problème est résolu... je ne comprends toujours pas d'où venait ce triangle noir, c'était peut-être normal ?! mais merci beaucoup !

sinon pour le code, j'ai déjà donné tout ce qu'il y avait d'important, peut etre la config d'openGL :

glViewport(0,0,800,600);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (float) 800/600, 1.0, 100.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.0,0.0,0.0,0.0);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);

glEnable(GL_LIGHTING);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH); // Je viens de le changer

et la lampe :

position= CVecteur3D(0,0.5,0);
rotation= CVecteur3D(0,0,0);
hauteurPas=0;
float LumHeroCouleur[]= { 1.0, 1.0, 1.0, 1.0 };
float LumHeroPosition[]= {0.0,0.5, 0.0, 1.0};
glLightfv(GL_LIGHT1, GL_DIFFUSE, LumHeroCouleur);
glLightfv(GL_LIGHT1, GL_POSITION,LumHeroPosition);
glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 30.0);
glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 30.0);
glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0.1f);
glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.0f);
glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.01f);
glEnable(GL_LIGHT1);

voila, merci encore !
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
22 févr. 2006 à 11:40
Bon bas c'est bon alors :) mais je ne comprends pas non plus pour ce triangle noir.
0
Rejoignez-nous