OpenGL et ordre d'affichage des polygones

BaardeBaarde Membre
18:01 modifié dans API AppKit #1
voici un morceau de code OpenGL devant afficher deux carrés : un gris et un jaune.
glBegin(GL_POLYGON);<br />glColor4f(0.5, 0.5, 0.5, 0.0);<br />glVertex3f(-3.2, -1.2, -1.2);<br />glVertex3f(-1.2, -1.2, -1.2);<br />glVertex3f(-1.2, -3.2, -1.2);<br />glVertex3f(-3.2, -3.2, -1.2);<br />glEnd();<br /><br />glBegin(GL_POLYGON);<br />glColor4f(1.0, 1.0, 0.0, 0.0);<br />glVertex3f(-3.2, -1.2, -3.2);<br />glVertex3f(-1.2, -1.2, -3.2);<br />glVertex3f(-1.2, -3.2, -3.2);<br />glVertex3f(-3.2, -3.2, -3.2);<br />glEnd();<br />

Le carré jaune est situé derrière le carré gris mais il s'affiche par-dessus. Comment faire pour que le carré jaune soit affiché derrière le carré gris et non pas au-dessus sans changer l'ordre dans lequel on déclare les carrés ?

[Fichier joint supprimé par l'administrateur]

Réponses

  • Eddy58Eddy58 Membre
    18:01 modifié #2
    Normalement l'ordre dans lequel tu dessines tes objets n'a pas d'importance si tu as bien initialisé le buffer de tri (Z_BUFFER).
    Sinon il vaut mieux spécifier GL_QUADS pour dessiner un quadrilatère. Il faut dessiner dans le sens horaire, la surface que tu vois est alors la face arrière de ton carré....donc en dessinant dans le sens anti-horaire c'est la face avant de ton carré que tu vois. :)

    [tt]
    glBegin(GL_QUADS);
    glVertex3f(-1.0f, 1.0f, 0.0f); // Haut Gauche
    glVertex3f( 1.0f, 1.0f, 0.0f); // Haut Droite
    glVertex3f( 1.0f,-1.0f, 0.0f); // Bas Droite
    glVertex3f(-1.0f,-1.0f, 0.0f); // Bas Gauche
    glEnd();
    [/tt]
  • BaardeBaarde Membre
    18:01 modifié #3
    Merci. J'ai finalement réussi en fouillant au hasard dans les options de la vue.
Connectez-vous ou Inscrivez-vous pour répondre.