IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Vertex Buffer OBject


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Par défaut Vertex Buffer OBject
    Bonjour !

    Alors voila, j`aurais quelques question concernant l`utilisation des VBO avec OpenGL :
    Je dois loader et afficher plusieurs millions de points et effectuer des traitement sur ceux-ci (delaunay etc...)
    Actuellement j`utilise deux VBO : Un pour les coordonnees et le second pour les couleurs.

    - Serait-ce plus efficace et preconise de n`utiliser qu`un seul et meme VBO pour les deux informations ?

    - Quelle est la meilleure technique pour mettre a jour les informations.
    (Dans les tutoriaux, les informqtions sont toujours traites par le CPU et tout est recopier a chaque fois dans le VBO correspondant... Cette methode me semble tres mauvaise, tout d`abord parce que ca fait avoir une copie des millions de points dans la VRAM ET dans la RAM et ensuite parce que le tranfers a chaque fois des Millions de points est tres gourmant. Bref plus aucun interet d`utilise les VBOs.)
    Dans ce cas, comment faire effectuer les traitement directement sur la VRAM ou par le GPU ?

    Shaders Or Not ?

    - Si j`utilise a chaque fois la totalite de mes points, y a t`il tout de meme un avantage a utiliser des VBI ?

    Je vous remercie.

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Bonjour

    Citation Envoyé par kirua_sama Voir le message
    Actuellement j`utilise deux VBO : Un pour les coordonnees et le second pour les couleurs.
    Pareil !
    Citation Envoyé par kirua_sama Voir le message
    - Serait-ce plus efficace et preconise de n`utiliser qu`un seul et meme VBO pour les deux informations ?
    Euh, franchement je ne sais pas, j'utilise la même technique que toi. J'ai regardé pour un vbo ne contenant que les indices de ma forme et je dois avouer que je n'ai pas suivi Donc, je fais ce que je comprend.
    Citation Envoyé par kirua_sama Voir le message
    - Quelle est la meilleure technique pour mettre a jour les informations.
    (Dans les tutoriaux, les informqtions sont toujours traites par le CPU et tout est recopier a chaque fois dans le VBO correspondant... Cette methode me semble tres mauvaise, tout d`abord parce que ca fait avoir une copie des millions de points dans la VRAM ET dans la RAM et ensuite parce que le tranfers a chaque fois des Millions de points est tres gourmant. Bref plus aucun interet d`utilise les VBOs.)
    Dans ce cas, comment faire effectuer les traitement directement sur la VRAM ou par le GPU ?
    J'ai récemment posté un thread où je cherchais à manipuler un carré (=VBO) avec la souris et le clavier. Je t'encourage à regarder ce thread (fais une recherche sur mon pseudo dans cette rubrique), tu y trouveras une approche de glMapBuffer.
    Citation Envoyé par kirua_sama Voir le message
    Shaders Or Not ?

    - Si j`utilise a chaque fois la totalite de mes points, y a t`il tout de meme un avantage a utiliser des VBI ?

    Je vous remercie.
    Je passe !

    En espérant t'avoir aidé.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    Dans tous les cas il vaut mieux utiliser les VBOs meme si a chaque fois on recopie entierement les donnees au GPU. NVidia a un bon document (en anglais) qui explique bien les avantages des VBOs et comment les utiliser de facon optimale (deuxieme liens en tapant nvidia VBO dans google).

    Sinon il vaut mieux avoir un seul VBO et avoir un tableau de structure comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    struct Vertex
    {
       vec3 position;
       vec3 normal;
       vec3 color; // ou vec3 texCoord;
      // etc.
    };
     
    std::vector< Vertex > vertice;
     
    glBufferData(..., &vertice[0]);
    Ca permet d'avoir une meilleure coherence de cache.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Par défaut
    Hi,

    Merci pour les reponses.

    GLDavid j`avais deja jete un oeil a ce thread ^^ (meme etant du JAVA). Et d`apres ton code tu recopie a chaque fois ton cache en VRAM : ) ... c`est ce que semble preconise TanEk aussi.

    Cependant TanEk, je ne pense pas que dans mon cas il soit interessant d`avoir une structure comme tu le dis. Je m`explique, il m`arrive souvent d`avoir moins de couleurs que de points, de ce fait je pense que c`est un gros gaspillage que d`allouer ma VRAM pour rien. Qu`en penses tu ?

    Enfin question travail sur les donnees, je ne sait pas a quel point il serait interessant d`utiliser des shaders pour travailler directement dans les VBOs pour faire du calcul pur que je fais (pas vraiment de rendering) ?

  5. #5
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    Citation Envoyé par kirua_sama Voir le message
    Hi,

    Merci pour les reponses.

    GLDavid j`avais deja jete un oeil a ce thread ^^ (meme etant du JAVA). Et d`apres ton code tu recopie a chaque fois ton cache en VRAM : ) ... c`est ce que semble preconise TanEk aussi.
    Je ne preconise pas de recopier a chaque fois tout le VBO, il faut toujours copier le minimum possible mais parfois ce n'est pas possible. Ce que je veux dire c'est qu'il est toujours preferable d'avoir un VBO qu'un vertex array ou pire envoyer les vertex en utilisant glVertex.

    Cependant TanEk, je ne pense pas que dans mon cas il soit interessant d`avoir une structure comme tu le dis. Je m`explique, il m`arrive souvent d`avoir moins de couleurs que de points, de ce fait je pense que c`est un gros gaspillage que d`allouer ma VRAM pour rien. Qu`en penses tu ?

    Enfin question travail sur les donnees, je ne sait pas a quel point il serait interessant d`utiliser des shaders pour travailler directement dans les VBOs pour faire du calcul pur que je fais (pas vraiment de rendering) ?
    Si tu es en limite de VRAM ok cela peut etre interessant (mais ca m'etonnerait que tu manques de memoire...). Si ce n'est pas le cas tu gagneras beaucoup plus de vitesse en limitant un cache miss qu'en essayant de gagner quelques mega octets.

    De plus... comment fais-tu pour partager tes couleurs dans differents vertex ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Par défaut
    Hye,

    Desoler pour cette reponse tardive.
    En fait, je suis un peu limite en VRAM car j`aimerais pouvoir utiliser la meilleure precision sur mes donnees (et donc pouvoir utilise le plus de Millions de points possible).

    Pour les couleurs, je reboucle une fois parcouru toutes celles-ci et replace dans un tableau de meme dimesion pour le moment, mais j`essayes de trouver une solution qui ferait moins de gachis. Et puis il serait aussi possible de desactive les couleurs.

    Le gain de performance est important a quel point en regroupant les deux de cette maniere ? Il semble que cela depends aussi de la maniere dont gere la CG la memoire contigue de toutes ces donnees... ^^

    Desoler si tout cela est un petit peu flou, mais j`aimerais garder une flexibilite dans le developpement de mon application.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans un vertex Buffer Object
    Par baperpere dans le forum OpenGL
    Réponses: 0
    Dernier message: 01/03/2009, 00h26
  2. Debogage Vertex Buffer Object
    Par Robert Dumarais dans le forum OpenGL
    Réponses: 5
    Dernier message: 02/08/2008, 16h16
  3. Vertex Buffer Object et performance
    Par ciberrique dans le forum OpenGL
    Réponses: 30
    Dernier message: 07/07/2008, 15h38
  4. Vertex Buffer Object avec de grands maillages
    Par Vinc35 dans le forum OpenGL
    Réponses: 8
    Dernier message: 25/10/2007, 19h46
  5. [Problème] Vertex Buffer Object
    Par Soznor dans le forum OpenGL
    Réponses: 20
    Dernier message: 19/07/2007, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo