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

  FORUM HardWare.fr
  Programmation
  C

  [Problème] OpenGL, glBegin(GL_TRIANGLES)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Problème] OpenGL, glBegin(GL_TRIANGLES)

n°1766133
Vel-Ryphon
Posté le 28-07-2008 à 23:14:50  profilanswer
 

Salut,
 
Voilà je viens de remarquer un truc qui va complètement à l'encontre de ce qui me paraissait logique.
J'ai un programme qui génère un gros volume de triangles.
 
Dans la classe de mon objet je boucle sur mon tableau de triangle pour les générer dans une liste d'affichage.
 
J'ai comparé 2 méthodes :
1 - j'initialise le glBegin(GL_TRIANGLES) en dehors de la boucle, et chaque draw() à ma classe triangle ne génère que des glVertex3f (par 3, donc)
2 - pour chaque triangle, la méthode draw appelle glBegin(GL_TRIANGLES), envoie 3 vertex, puis glEnd(), et ce pour tous les triangles.
 
La théorie m'a toujours fait penser que la méthode 2 est vraiment pourrie et plus lourde que la méthode 1.
 
Et pourtant dans les faits, sur mon volume constituer de 2 000 000 de triangles, avec la méthode 1 ça râme un peu alors qu'avec la méthode 2 c'est totalement fluide.
 
Quelqu'un aurait une explication ??
 
Je vous remercie d'avance !

mood
Publicité
Posté le 28-07-2008 à 23:14:50  profilanswer
 

n°1770734
buggen
Posté le 07-08-2008 à 15:06:02  profilanswer
 

si tu travailles sur win32 API met la fonction Sleep(); pour voir ce qui est long

n°1770882
Jux_
Posté le 07-08-2008 à 18:31:02  profilanswer
 

Citation :

si tu travailles sur win32 API met la fonction Sleep(); pour voir ce qui est long


 
Gné?
 
Pour répondre à la question originale, en effet, la méthode 2 doit normalement être plus lente que la première. En revanche, il se passe peut être quelque chose d'autre dans ton code que tu as loupé. Il faut aussi savoir que de toute façon la méthode directe (glBegin, glEnd, glVertex) est complètement pourrave. Elle n'existe encore que pour des soucis de retro compatibilité (et va gicler pour opengl 3) et n'est pas du tout optimisée pour le hardware (il est d'ailleurs éventuellement possible que la lib réorganise les données d'une façon plus "hardware friendly", ce qui expliquerait le résultat bizarre mais ça n'est la qu'une supposition de ma part).
Le seul conseil que je pourrait donner c'est de passer par des VertexArrays ou des vertex buffers. C'est bien plus efficace que le mode direct.


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

  [Problème] OpenGL, glBegin(GL_TRIANGLES)

 

Sujets relatifs
Probleme SSLV2[Résolu] problème background-repeat
Probleme particulié en xhtml/css - FIXEDProbleme TeXnicCenter compilation
[HTML][JavaScript] Problème d'accès à l'état d'une checkbox via JSProbleme de communication PHP/JS 'Edit in place'
[RESOLU] Open Office Basic : Problème for eachprobleme envoi mail avec MIME::Lite
problème de requête - FREETEXTTABLE (SQL serveur)Petit probleme de syntaxe pour utiliser du javascript en php
Plus de sujets relatifs à : [Problème] OpenGL, glBegin(GL_TRIANGLES)


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