begin process at 2012 05 30 22:45:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

OpenGL

 > 

Vertex buffer object à systématiser ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Vertex buffer object à systématiser ?

dimanche 24 septembre 2006 à 11:33:52 | Vertex buffer object à systématiser ?

eplanet

Bonjour à tous, je fais un programme en openGL et je voulais savoir si il vaut mieux systématiser l'utilisation des vertex buffer object ou bien s'il faut les réserver seulement pour les maillages importants. En effet, lorsqu'il faut dessiner seulement deux pauvres triangles, vaut-il mieux utiliser glBegin(GL_TRIANGLES); ou bien créer des buffer de vertex, textures et normales...
Merci

Vince
dimanche 24 septembre 2006 à 11:50:39 | Re : Vertex buffer object à systématiser ?

Galmiza

Réponse acceptée !
Tout dépend des performances requises.
Pour les meilleures performances, il faut charger un max de données dans la carte vidéo à l'initialisation (textures, vertex buffers, index buffers, shaders), puis le programme principal n'aura qu'a donné des ordres à la carte vidéo.

Si tu crées, remplis puis envoies les vertex et index buffer à chaque boucle (glBegin(GL_TRIANGLES)) c'est sûr que ça tournera moins vite.
dimanche 24 septembre 2006 à 12:00:54 | Re : Vertex buffer object à systématiser ?

eplanet

Ok je te remercie, je vais essayer de remplacer tout mes glBegin(GL_TRIANGLES); alors. Sinon deuxième question : j'ai un même carré à afficher plusieurs (beaucoup de) fois mais à des positions différentes, est-ce qu'il vaut mieux faire des buffers pour un seul des carré et ensuite afficher plusieurs fois ce carré avec des glTranslatef et glRotatef ou bien est-ce qu'il vaux mieux dupliquer le carré plusieurs fois dans le buffer (en changeant les positions) et n'afficher qu'une fois le buffer obtenu ?

Vince
dimanche 24 septembre 2006 à 12:16:45 | Re : Vertex buffer object à systématiser ?

Galmiza

Bien sûr, tu sauves une seule fois le maillage du carré dans un buffer.
Pour afficher des carrés à différentes positions, tu modifies leur matrice de transformation.

C'est comme les textures, on ne charge jamais 2 fois la même texture dans la mémoire vidéo, on dit juste au moment de l'affichage lesquelles on veut utiliser.


En fait tu dis à la carte vidéo:
Affiche moi un objet en utilisant
- ce vertex buffer avec cet index buffer (géometrie dans son repère local)
- cette matrice de transformation (grace a qui les vertex seront transposés dans le repère absolu)
- ces textures (skin)
- ces shaders (effets graphiques)
dimanche 24 septembre 2006 à 12:37:33 | Re : Vertex buffer object à systématiser ?

luhtor

Réponse acceptée !
Non je suis pas du tout d'accord. Il faut minimiser le nombre d'appel de fonction a l'api. Donc hors de question d'afficher un carré un par un a des positions différentes en modifiant la matrice (avec en plus une masse de calcul supplémentaire). Tu remplis un buffer avec le nombre de carré que tu veux à la position souhaité et tu affiches tout avec un seul appel de fonction.


dimanche 24 septembre 2006 à 12:40:03 | Re : Vertex buffer object à systématiser ?

eplanet

Oki ! Merci beaucoup Galmiza pour tes explications.

Vince
dimanche 24 septembre 2006 à 12:44:36 | Re : Vertex buffer object à systématiser ?

eplanet

ah... j'ai répondu avant d'avoir la réponse de Luthor...

Vince
dimanche 24 septembre 2006 à 13:11:09 | Re : Vertex buffer object à systématiser ?

luhtor

Quand tu dis "bcp de fois", c'est genre mille ou un million ? Si c'est 1000, le coup mémoire est négligeable. Si c'est un million, de toute facon, ya pas le choix, il faut tout mettre en mémoire video, si tu veux avoir un fps correct (ou bon). Dans le deuxième cas, si tu as besoin de normales et de coordonnées de texture, tu auras besoin de pas mal de mémoire video.
dimanche 24 septembre 2006 à 13:20:52 | Re : Vertex buffer object à systématiser ?

eplanet

Beaucoup de fois c'est mille, mais c'est pour le principe car ce nombre risque de beaucoup augmenter. Merci Luthor, je pense que je vais dupliquer les carrés dans le buffer, je ne sais pas si le gain sera très important mais au moins ca ne peut pas être néfaste pour mon fps. Merci encore.

Vince
dimanche 24 septembre 2006 à 13:30:25 | Re : Vertex buffer object à systématiser ?

luhtor

Le gain entre quoi et quoi ? J'ai testé personnellement sur ma X700 les perfs max que je pouvais obtenir. Je trace 110 millions de triangles (gl_triangles) par seconde au maximum. Donc si ca peut te donner une idée des perfs que tu peux obtenir.

Alors qu'avec glbegin/end, je pense pas que tu dépasses le million.




1 2

Cette discussion est classée dans : buffer, seulement, object, vertex, systématiser


Répondre à ce message

Sujets en rapport avec ce message

ASSERT ? [ par tsanti ] Dans InitDeviceObjectJe vérouille 1 fois le Vertex Buffer, je récupère la hauteur du Mesh,je dévérouille.Ensuite je traite les informations de hauteur OpenGL : les vertex buffer ca marche comment ? [ par eplanet ] Bonjour à tous, je voudrais me mettre aux vertex buffer pour optimiser un programme en openGL, seulement, lorsque j'écris la ligne :        glBindBuff OpenGL : modifier un vertex buffer ? [ par eplanet ] Bonsoir, je fais un petit jeu en openGL en utilisant les vertex buffer, et je voudrais pouvoir transformer au cours du temps les données contenues dan CLASS -> DLL -> OBJECT VBA [ par fx_forum ] Maintenant que j'arrive a appeller en vba des fonctions c++ mises en dll , j'aimerai aller un grand au-dessus : ecrire une class, la mettre en dll et getoenfilename -> ??? [ par stefbuet ] salut,sur une source (http://www.cppfrance.com/code.aspx?ID=28478)j'ai extrait une fonction de la librairy créé et ais essayé de la faire fonctioner, Problème pour translater un vertex de type D3DFVF_XYZRHW... [ par eplanet ] Bonjour, je fais un programme avec directX, et je voudrais créer un curseur. Donc j'utilise un format de vertex "transformed" (D3DFVF_XYZRHW) et je cr Double Buffer !!!!!!!!!!!! [ par BugcORE ] SA FAIT un bon moment que j'essai de fairefonctionner un Double Buffer !J'ai eu pas mal de problème avec !(U.C. 100%, Affiche rien, etc....)J'arrive m Dll ou lib dans un ActiveX [ par sephiro ] Bonjour,J'utilise ATL pour faire un ActiveX, l'ensemble de mon code fonctionne tres bien , connexion sur un serveur http, requete et reception de donn CList et win32 [ par jojomillenium ] Bonjour, ma question est simple, je defini mes classes telquel: // COORDONNEES class VERTEX                            // Build our Vertex Class { pub Stocker fichier dans une application [ par yugimega ] Bonjour,Je voulais savoir comment stocker tout un fichier dans un buffer interne a une application :Ouvrir le fichier et récupérer toutes les donnée d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales