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 :

Utilisation des VBO avec JOGL


Sujet :

OpenGL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut Utilisation des VBO avec JOGL
    Bonjour,
    J'ai développé une application qui permet d'afficher une scène 3D à partir d'un fichier. Comme j'utilise la méthode classique de rendering (glBegin(), glEnd()), à un moment donné lorsque ma scène devient volumineuse, les performances du système commencent à se dégrader et la scène devient lourde.
    J'ai pensé alors d'utiliser les VBO (Vertex Buffer Objects) pour accélérer ma scène.
    Mes questions:
    1) Connaissez vous un tutoriel expliquant bien l'utilisation des VBO avec JOGL?
    2) J'ai vu quelque exemples et je suis planté au niveau de l'instruction "gl.glDrawArrays( GL.GL_QUADS, 0, NumOfVertices[0] );" qui doit indiquer à priori le type d'objet à rendre, alors que mes objets sont de différents types (QUAD, TRIANGLE, POLYGON, etc.). Comment gérer dans la même instruction des objets de différents types?

    Merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut
    Bonjour,

    je n'utilise pas Jogl donc aucune idée de ce que ca vaut mais regarde là, ca a l'air de faire le boulot:
    http://www.java-tips.org/other-api-t...gl-port-2.html

    (Au passage, "Jogl VBO tutorial" dans google...et c'est la 1ere réponse donc...euh, hé faut chercher un peu aussi!

    Pour la 2eme question: Quand tu utilises Drawarrays et ses variantes, c comme si tu faisais un glBegin(GL_QUADS) (par exemple) puis que tu envoyais des glVertex pour toutes les vertices de ton VBO.

    Du coup, il est préférable d'optimiser, par exemple, eviter les GLQUADS, remplacer si possible par des GL_TRIANGLE_STRIP (ce qu'il y a de plus rapide), et essayer de combiner un maximum les geometries pour n'avoir, dans l'ideal, qu'un seul appel a glDrawArrays.

    C'est pas toujours possible et c'est assez contraignant je sais, mais une fois que c'est fait le gain en performances est vraiment non négligeable.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Merci ShevchenKik.
    Une petite dernière question: comment plaquer des textures à des polygones en utilisant cette méthode?

  4. #4
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut
    Quand tu utilises les VBO tu dois activer différents "Client states", et fourninr les infos correspondantes.

    En gros, tu fais par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_NORMAL_ARRAY);
    Et dans ton VBO tu mets des vertices au format {posX, posY, posZ, nX, nY, nZ}

    Si tu veux texturer la geometrie de ton VBO, tu rajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glEnableClientState(GL_TEX_COORDS_ARRAY);
    Et tu passes des vertices au format {posX, posY, posZ, nX, nY, nZ, texU, texV}

    (Ah et bien sûr il faut encore binder la texture correspondant avant d'appeler glDrawarrays.

    Bon, là c'est expliqué vite fait et de tête, ca doit être détaillé comme il faut dans le tutorial que je t'ai indiqué

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Merci ShevchenKik.
    sauf que j'utilise des textures automatiques et je précise pas explicitement des coordonnées de textures.

Discussions similaires

  1. [JMS] Utilisation des "queue" avec JMS
    Par be_tnt dans le forum Java EE
    Réponses: 1
    Dernier message: 01/11/2006, 16h05
  2. [JTABLE] Peut-on utiliser des autoFilters avec une JTable
    Par Nico+10) dans le forum Composants
    Réponses: 3
    Dernier message: 18/09/2006, 19h53
  3. Problème avec l'utilisation des VBO
    Par Ekinoks dans le forum OpenGL
    Réponses: 12
    Dernier message: 09/07/2006, 18h42
  4. Utilisation des paramètres avec rowsource - 97 et 2003
    Par IntenseM3 dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 09h18
  5. Utiliser des webservices avec nusoap
    Par budiste dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2006, 11h56

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