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 mapping ? Mise à jour VBO ?


Sujet :

OpenGL

  1. #1
    Yno
    Yno est déconnecté
    Membre habitué Avatar de Yno
    Inscrit en
    Novembre 2005
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 138
    Points : 141
    Points
    141
    Par défaut Vertex mapping ? Mise à jour VBO ?
    Bonjour,

    Après avoir lu le tutoriel suivant:
    http://www.g-truc.net/article/vbo-fr.pdf
    j'ai vu vers la fin, qu'il parlait de "vertex mapping".
    Il donne deux exemples, tout deux montrant la démarche à suivre pour mettre à jour les données du VBO.
    Ensuite, il dit que ce n'est pas bien de faire ce qu'il a fait et que ce n'est pas le but du vertex mapping
    Si j'ai bien compris, l'objectif est de pouvoir libérer les données côté client une fois envoyées au VBO, et d'effectuer les manipulations des données directement du côté serveur. (corrigez-moi si je dis n'importe quoi)
    Donc si c'est le cas, une bonne utilisation du vertex mapping serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // création
    - recuperer les données;
    - envoyer les données au vbo;
    - libérer les données;
     
     
    // modification
    - data = glMapBuffer GL_READ_WRITE;
    - modifier donnéees (data);
    - glUnmapBuffer;
    Où "modifier données" serait par exemple l'application d'une matrice aux sommets, ou n'importe.

    Si jusque là je n'ai pas dis de bêtises, j'ai quelques questions sur une bonne utilisation du vertex mapping:

    Supposons que j'ai un ensemble de modèles chargés chacun dans un VBO,

    - Si mes modèles sont animés (mise à jour relativement fréquente), étant donné que, selon le tutoriel sur g-truc.net, le vertex mapping implique une synchronisation CPU/GPU, dois-je mettre à jour tous mes modèles d'un seul coup ? (glmap, glmap, glmap, modifs, glunmap, glunmap, glunmap)
    - Comment intervient le flag GL_*_DRAW donné à glBufferData lors de la mise à jour des données ? Lequel vaut-il mieux utiliser ?

    Merci pour vos réponses

    Bonne journée.

  2. #2
    Membre habitué Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 142
    Points
    142
    Par défaut
    Salut !

    - Comment intervient le flag GL_*_DRAW donné à glBufferData lors de la mise à jour des données ? Lequel vaut-il mieux utiliser ?
    Ce paramètre modifie la gestion interne des vbo : normalement un GL_DYNAMIC_DRAW devrait être plus performant dans le cas du vertex mapping.

    Si ça peut t'aider.

    Cordialement.

  3. #3
    Yno
    Yno est déconnecté
    Membre habitué Avatar de Yno
    Inscrit en
    Novembre 2005
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 138
    Points : 141
    Points
    141
    Par défaut
    Salut, et merci d'avoir répondu

    Citation Envoyé par razmott
    Ce paramètre modifie la gestion interne des vbo : normalement un GL_DYNAMIC_DRAW devrait être plus performant dans le cas du vertex mapping.
    En fait, je posais cette question, parce que j'avais fait quelques tests.

    J'avais mesuré les performances de mon application, en mettant à jour à chaque frame toutes les données de couleur des sommets. (GL_WRITE_ONLY, j'ai fais un memcpy brutale)
    Il s'est avéré que les meilleures performances que j'ai obtenues étaient :

    Vertex: GL_STREAM_DRAW
    Index : GL_STATIC_DRAW

    Toutes les autres combinaisons que j'ai pu essayer ne donnaient pas d'aussi bonnes perfs.

    Tout ça pour dire que si ma façon d'utiliser le vertex mapping (memcpy) est mauvaise, alors les tests que j'ai fais sont sans doute erronés pour une autre façon de "vertex mapper".

    Donc, si le memcpy est plutôt mauvais, ou n'offre pas les meilleures performances, que faire ? (GL_READ_WRITE était ma proposition)

    Merci

    Bonne soirée.

  4. #4
    Membre habitué Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 142
    Points
    142
    Par défaut
    salut !

    Je ne sais pas trop mais tu devrais regarder le code de Laurent Gomila sur les moteurs 3d : il a fait la même remarque que toi.

    Cordialement.

Discussions similaires

  1. mise à jour VBO pour une animation
    Par Bousk dans le forum OpenGL
    Réponses: 3
    Dernier message: 09/02/2013, 18h49
  2. Parameter Map : mise à jour automatique
    Par mederik dans le forum Cognos
    Réponses: 0
    Dernier message: 13/02/2012, 16h52
  3. Mise à jour VBOs
    Par coda_blank dans le forum OpenGL
    Réponses: 1
    Dernier message: 17/06/2010, 23h58
  4. [VBO] vertex map VS vertex map indexée
    Par Kurisu dans le forum OpenGL
    Réponses: 7
    Dernier message: 13/12/2006, 23h07
  5. [z/OS] [CICS] Mise à jour de map
    Par maubeuge59 dans le forum Cobol
    Réponses: 4
    Dernier message: 16/11/2006, 11h46

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