Je rencontre un problème très étrange dans OpenGl. Le code suivant produit un cube jaune comme prévuCube ne s'affiche que si j'appelle glPopMatrix après glEnd (et non l'inverse)
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (GLfloat[]){ 1, 1, 0, 1 });
glBegin(GL_LINE_LOOP);
glutSolidCube(1);
glPopMatrix();
glEnd();
Cependant quand je mets glPopMatrix() après glEnd(), je reçois juste un écran noir sans un cube.
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (GLfloat[]){ 1, 1, 0, 1 });
glBegin(GL_LINE_LOOP);
glutSolidCube(1);
glEnd();
glPopMatrix();
Pour moi, la seconde approche est plus logique, (push, début, fin puis pop) et je ne sais vraiment pas pourquoi il ne fonctionne pas. Toute aide est la bienvenue, merci!
Puisque le deuxième exemple devrait être le bon, je soupçonne fortement que tout ce qui ne va pas avec votre code est en dehors du code que vous avez posté. Êtes-vous en train de modifier la matrice entre 'PushMatrix' et' PopMatrix'? Si c'est le cas, c'est probablement * (juste deviner, cependant) que la nouvelle matrice que vous créez est fausse, alors que celle d'avant est correcte, et puisque vous retournez la précédente avant 'glEnd', elle est en fait celui qui s'habitue à la transformation. – Dolda2000