COMPARAISON DE QUATRE MÉTHODES OPENGL POUR AFFICHER UN OBJET 3D

shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014 - 24 avril 2013 à 15:18
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 - 29 avril 2013 à 11:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/55105-comparaison-de-quatre-methodes-opengl-pour-afficher-un-objet-3d

pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
29 avril 2013 à 11:55
Merci CharSnipeur. Je comprends bien qu'il est parfois un peu difficile de changer ses habitudes surtout quand la méthode old_school continue de fonctionner avec seulement des performances limitées, c'est mon cas ! Je n'ai pas dit que je souhaite être éducatif et d'ailleurs je ne le revendique nullement. Je suis déjà content de pouvoir proposer des développements libres d'utilisation pour les visiteurs et d'avoir l'opportunité de quelques échanges à leurs sujets. C'est vrai qu'il y a ici peu de commentaires. J'y ai pensé, mais je ne sais pas comment faire autrement que de paraphraser les instructions du programme, ce qui n'est sûrement pas souhaitable. De plus, le fichier vbo.pdf est un bon complément. Je me suis fait une petite liste de références pour de la programmation de démonstration sur les VBOs. Je veux bien l'envoyer par message privé mais avec Google on peut trouver aussi bien assez facilement.
CharSnipeur Messages postés 3 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 février 2009
29 avril 2013 à 08:49
Bonjour,
j'utilise peu OpenGL et uniquement manière "old_school". Ce code m'aide à comprendre les autres méthodes de codage des objets. Mais c'est vrai qu'il manque cruellement de commentaire pour quelqu'un comme moi, surtout les vbo.
Si tu veux être vraiment éducatif, il faudrait rajouter un commentaire sur chaque fonction utilisée, sur ce qu'elle fait dans l'espace OpenGL.
typiquement, :
glBegin(GL_QUAD_STRIP); // on debute une serie de quadrilateres separé.
Merci pour ce code.
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
26 avril 2013 à 08:39
Merci Shenron666
Ce programme de Wayne O. Cochran va surement me faire progresser dans l'utilisation de VBOs. Je le connais en détails maintenant ! Il avait quand même besoin de diverses adaptations pour fonctionner comme je le souhaitais. Il n'y a pas beaucoup de commentaires, mais son organisation est linéaire et facile à comprendre, en plus il y a le fichier vbo.pdf qui donne aussi quelques explications.
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
26 avril 2013 à 00:22
J'ai regardé ta source, c'est nickel.
En plus, tu as rapidement trouvé le problème et sa correction, tu as peut-être quelque chose à apprendre à ton prof ;)
Continues comme ça.
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
25 avril 2013 à 21:23
Quand on initialise ou bien qu'on utilise les VBOs on active chacun d'eux l'un après l'autre dans un mode ou dans un autre. Mais après la fin d'utilisation il convient de les désactiver. Ce n'était pas fait, mais maintenant la correction est faite. Et c'est pour cela que l'initialisation des VBOs était incompatible avec l'utilisation des Vertex Arrays ensuite. En plus, comme il n'y a pas de changement important dans l'organisation du programme il a été facile d'introduire le basculement d'une méthode d'affichage OpenGL pour l'objet 3d pendant l'exécution et non plus dans le source. C'est mieux, non ?
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
25 avril 2013 à 14:34
Moi non plus je n'ai pas d'explication sur l'incompatibilité que j'ai rencontrée. Voici plus précisément ce que j'ai observé. Si je désactive le if(strcmp(draw,"vbo")==0) dans init() la totalité des initialisations est faite, y compris celle qui est nécessaire ici pour les VBOs. Dans ces conditions les options draw = "old" ou "list" ou "vbo" fonctionnent très bien. Par contre l'option draw = "va" provoque chez moi une sorte de plantage de mon PC dont je sors plus ou moins difficilement. C'est dommage, parce que j'avais déjà programmé le basculement via le menu avec une petite indication, en bas de la fenêtre, pour indiquer la méthode en service. Ce serait un complément intéressant de trouver l'explication.
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
25 avril 2013 à 11:56
Impeccable pour ce qui est de la description.
par contre, je ne comprend pas pourquoi la séquence d'init pour les vbo est incompatible avec les vertex array
tu peux tout à fait utiliser les vbo et les vertex array simultanément
c'est peut-être un état opengl mal configuré qui traine quelque part dans le code
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
24 avril 2013 à 22:35
Shenron666, Je n'ai pas programmé le basculement d'une méthode d'affichage à une autre pendant l'exécution pour deux raisons : il y a dans init() une séquence d'initialisation qui est nécessaire pour les VBOs mais qui est incompatible avec les Vertex Arrays et de plus chaque méthode fournit exactement les mêmes fonctions, donc ce basculement n'aurait aucun effet visible. Selon moi, on pourrait le faire au prix d'une complication qui n'en vaut pas la peine pour un simple démonstrateur. Il est bien vrai que les Display Lists sont dépréciées autant que les fonctions immédiates, elles ne sont là que pour faire la comparaison avec les méthodes plus récentes dans le but d'aider ceux qui par ancienneté ne connaissent que celles-ci et qui souhaitent en changer. Par contre j'ai mis quelques commentaires explicatifs supplémentaires et j'ai, je crois, amélioré la présentation.
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
24 avril 2013 à 19:31
Salut, comme tu dis, les fonctions immédiates sont dépréciées.
Il faut savoir que les display list le sont également.

Il serait intéressant que ton programme permette de basculer d'un mode à l'autre sans avoir à recompiler le code.
Le menu contextuel est implémenté, ajouter cette possibilité au menu n'est pas compliqué.

Un peu plus de commentaires ne serait pas de refus, surtout si tu cibles les débutants.

Avec tout ça, ta source deviendrait intéressante d'un point de vue éducatif.

ps: Il manque des retours à la ligne dans la description ;)
Rejoignez-nous