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 :

Optimisation et display lists


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    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 893
    Par défaut Optimisation et display lists
    Bonjour

    Mon application est finie. Mais je souhaite encore l'optimiser.
    Ainsi, une mesure sur mon profiler me montre qu'elle passe du temps à dessiner mon réseau. En effet, mon application visualise des réseaux où mes noeuds sont des glutSolidSphere et mes liens des glutSolidCylinder.
    Chaque noeud est stocké dans un ArrayList (je code en Java5) et chaque lien est aussi dans un ArrayList. Donc, je dessine séquentiellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    private void drawNodes(GL gl, int mode) {
            gl.glPushMatrix();
            gl.glPopName();
            for (int i = 0; i < this.nodes.size(); i++) {
                if (mode == gl.GL_SELECT) {
                    gl.glLoadName(i);
                    gl.glPushName(i);
                }
                displayNode(gl, i);
            }
            gl.glPopName();
            gl.glPopMatrix();
        }
     
        private void drawEdges(GL gl, int mode) {
            gl.glPushMatrix();
            for (int i = 0; i < this.edges.size(); i++) {
                GLEdge e = this.edges.get(i);
                if (e.isVisible()) {
                    e.draw(gl, new GLU(), mode);
                }
            }
            gl.glPopMatrix();
        }
     
        private void drawWorld(GL gl, int mode) {
            drawNodes(gl, mode);
            setWrap();
            //wrap.draw(gl);
            //wrap.print();
            drawEdges(gl, mode);
        }
    Comme vous le voyez sur mon code de dessus, je fais du picking sur mes noeuds.
    Ma question: comment puis-je optimiser sachant que ce qui me prend du temps, c'est la restitution des mes cylindres et sphères. On me parle des display lists, mais avec le picking, je ne vois pas comment je peux les placer. Je précise que mes noeuds et liens sont des objets distincts (GLNode et GLEdge). Dans ces objets, j'effectue les transformations géométriques adéquates et j'ordonne le dessin.

    Merci d'avance de vos conseils.

    @++
    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.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut David,

    j'entends souvent que les Frame Buffer Objects sont bien plus performants que les display list. Je n'en suis pas encore arrivé à cette étape d'optimisation dans mon programme donc je n'y connais encore pas grand chose, mais avec un peu de chance picking et FBOs sont compatibles... avis aux experts!

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    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 893
    Par défaut
    Bonjour ShevchenKik

    Merci de ta réponse. Wouah, les frame buffer objects
    A vrai dire, je ne connais pas, je suis resté à OpenGL 1.2. Je vais me documenter mais s'il y a plus simple, je prends.
    Merci encore de ta suggestion.

    @++
    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.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Oups, je me rends compte que j'ai dit une bêtise: je voulais parler des Vertex Buffer Objects, pas des FBOs. Les FBOs servent, par exemple, à faire du offscreen rendering ou du rendering to texture.

    Pour le peu que j'en sais, les VBO c'est une manière de stocker tes vertex sur le GPU une fois au départ, ce qui évite de transferer les vertex du CPU au GPU à chaque frame. Comme dis je ne m'y suis pas encore mis mais c'est prévu, donc si entre temps tu réussis à implémenter ca comme il faut il y moyen qu'un de ces 4 ca soit mon tour de t'interroger là dessus

    En tout cas j'utilise des FBOs et ca n'est pas très compliqué. J'imagine (enfin, j'espère...) qu'il en est de même pour les VBOs

  5. #5
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    un truc très simple à faire, c'est de tout stocker dans une display list, et de recréer la display liste à chaque changement. pour le picking, tu a juste à faire le rendu sans display list, ça marchera.
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    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 893
    Par défaut
    Bonjour Bafman et merci encore de ta réponse, toujours très précieuse

    Une petite question alors: je ne suis pas très à jour sur les display lists. Je vois qu'on les crée toujours dans la méthode init(). Si je suis ta réponse, dans ma méthode display, je peux donc recréer une liste comme ça me chante ?

    @++
    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.

Discussions similaires

  1. Display list, textures et optimisations
    Par GLDavid dans le forum OpenGL
    Réponses: 6
    Dernier message: 20/05/2008, 10h15
  2. optimisations(vbo,display list) + bsp
    Par delfare dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 07/03/2007, 09h34
  3. Vertex Array dans Display List ?
    Par GruZloR dans le forum OpenGL
    Réponses: 3
    Dernier message: 29/03/2006, 12h55
  4. Petit problèmes avec display list et transformations
    Par Baptiste Wicht dans le forum OpenGL
    Réponses: 5
    Dernier message: 10/02/2006, 17h00
  5. Multitexturing Vertex Array et Display List
    Par Wyatt dans le forum OpenGL
    Réponses: 1
    Dernier message: 04/05/2005, 15h07

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