[C++/OpenGl] probleme affichage polygone

probleme affichage polygone [C++/OpenGl] - C++ - Programmation

Marsh Posté le 28-04-2005 à 12:12:41    

bonjour,  
j'ai un probleme d'affichage en openGl, en utilisant GLUT.
je tente de creer un polygone en forme de U que voici en vue filaire:
http://membres.lycos.fr/tercuite/divers/bleme2.JPG
et voici ce qu'il m'affiche en vue normale:
http://membres.lycos.fr/tercuite/divers/bleme.JPG
 
voici le code source de ma fonction qui est censée tracer le polygone:

Code :
  1. void Polygone::tracer() {
  2.      glBegin(GL_POLYGON);
  3.      for(int i = 0 ; i<_listePoints.tailleListe() ; i++) {
  4.              glVertex2f(_listePoints.getObjet(i)->getX(), _listePoints.getObjet(i)->getY());       
  5.      }
  6.      glEnd();
  7. }


 
si qq peut m'aider, ça serait sympa (j'ai déjà tenté de changer mes librairies sans succès)
Merci.
 
 
 

Reply

Marsh Posté le 28-04-2005 à 12:12:41   

Reply

Marsh Posté le 28-04-2005 à 12:53:48    

Salut,
Tu peux poster ta liste de points stp ? Et es-tu obligé de faire un GL_POLYGON pour ça ? (c'est pas vraiment optimisé)

Reply

Marsh Posté le 28-04-2005 à 13:25:40    

IrmatDen a écrit :

Salut,
Tu peux poster ta liste de points stp ? Et es-tu obligé de faire un GL_POLYGON pour ça ? (c'est pas vraiment optimisé)


 
Les points qui servent à tracer le polygone sont :

Code :
  1. liste->ajouterObjet(new Point(200.,200.));
  2.    liste->ajouterObjet(new Point(300.,200.));
  3.    liste->ajouterObjet(new Point(300.,205.));
  4.    liste->ajouterObjet(new Point(205.,205.));
  5.    liste->ajouterObjet(new Point(205.,295.));
  6.    liste->ajouterObjet(new Point(300.,295.));
  7.    liste->ajouterObjet(new Point(300.,300.));
  8.    liste->ajouterObjet(new Point(200.,300.));


 
Et qu'est-ce que tu me conseillerais de mettre dans le glBegin() ? GL_POLYGON est le seul paramètre que je connaisse, avec GL_QUADS lol...

Reply

Marsh Posté le 28-04-2005 à 14:11:02    

Je pense qu'il vaut mieux le dessiner en 2 étapes avec la primitive GL_TRIANGLE_FAN.
D'après ton tableau, on va dessiner les triangles:
- {4,3,2} ; {4,2,1} ; {4,1,5}
- {5,1,8} ; {5,8,7} ; {5,7,6}
Je te laisse faire une petite recherche google pour savoir comment l'implémenter...

Reply

Marsh Posté le 28-04-2005 à 17:12:40    

ok merci je vais tester ca.

Reply

Marsh Posté le 29-04-2005 à 00:12:11    

Pas les triangle fans pitié. En plus ça ne marchera pas pour sa forme non étoilée (je vous laisse chercher ce que c'est).
 
à la rigueur des triangle strips mais les listes de triangles indexée c'est pas mal aussi.

Reply

Marsh Posté le 29-04-2005 à 00:31:57    

Oops  :sweat:  
Pourquoi cela ne pourrait pas marcher si on fait 2 de ces primitives autour des 2 points intérieur du U (4 et 5) :

1____________2
|  4_________3
|  |
|  |
|  |
|  5_________6
8____________7


 
Pour les strip, je savais pas comment faire avec son tableau. Et pour les vertex arrays, je ne pensais pas que c'était vraiment mieux que les fans.
Edit : mieux en ce qui concerne cette utilisation s'entende


Message édité par IrmatDen le 29-04-2005 à 00:32:32
Reply

Marsh Posté le 29-04-2005 à 01:46:21    

IrmatDen a écrit :

Oops  :sweat:  
Pourquoi cela ne pourrait pas marcher si on fait 2 de ces primitives autour des 2 points intérieur du U (4 et 5) :

1____________2
|  4_________3
|  |
|  |
|  |
|  5_________6
8____________7


Ca marche mais y a plus élégant.

IrmatDen a écrit :

Et pour les vertex arrays, je ne pensais pas que c'était vraiment mieux que les fans.
Edit : mieux en ce qui concerne cette utilisation s'entende

Y a mélangeage la... Le type de primitive n'a rien à voir avec le mode de transfert.  
 
Sinon pour en revenir à la question initiale : le probleme vient de la non-convexité du polygone. OpenGL n'accepte que des polygones convexes.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed