Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1354 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++/OpenGl] probleme affichage polygone

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++/OpenGl] probleme affichage polygone

n°1064104
manutudesc​end
Posté le 28-04-2005 à 12:12:41  profilanswer
 

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.
 
 
 

mood
Publicité
Posté le 28-04-2005 à 12:12:41  profilanswer
 

n°1064177
IrmatDen
Posté le 28-04-2005 à 12:53:48  profilanswer
 

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é)

n°1064209
manutudesc​end
Posté le 28-04-2005 à 13:25:40  profilanswer
 

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...

n°1064254
IrmatDen
Posté le 28-04-2005 à 14:11:02  profilanswer
 

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...

n°1064600
manutudesc​end
Posté le 28-04-2005 à 17:12:40  profilanswer
 

ok merci je vais tester ca.

n°1065243
LeGreg
Posté le 29-04-2005 à 00:12:11  profilanswer
 

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.

n°1065255
IrmatDen
Posté le 29-04-2005 à 00:31:57  profilanswer
 

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
n°1065268
retrox
Posté le 29-04-2005 à 01:46:21  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++/OpenGl] probleme affichage polygone

 

Sujets relatifs
[JAVA] Petit problème de centrage [résolu][Flash] Problème texte vectoriel
opengl, conseil a propos d un projetProbleme affichage de pages
[MYSQL 4.1] Probleme pour recreer une base a partir d'un dumpthread : probleme avec start
Probleme de log[RESOLU][XSL/JavaScript]problème d'intégration code JS dans le XSL
Problème MD5 
Plus de sujets relatifs à : [C++/OpenGl] probleme affichage polygone


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR