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 :

[SDL+glut] vertex array précompilés


Sujet :

OpenGL

  1. #1
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut [SDL+glut] vertex array précompilés
    bien le bonjour,

    j'essaie d'utiliser les vertex array précompilés mais sans grand succès.
    voilà comment je m'y prends :

    dans l'initialisation d'opengl je rajoute ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    glEnableClientState ( GL_VERTEX_ARRAY );
      char *exten = (char *) glGetString(GL_EXTENSIONS);
      if (strstr(exten, "GL_EXT_compiled_vertex_array") == 0)
      {
         fprintf(fichier_log,"<<< GL_EXT_compiled_vertex_array NOT found >>>\n");
         SDL_quit(1);
      }
      else fprintf(fichier_log, "<<< GL_EXT_compiled_vertex_array found >>>\n");
     
      glLockArraysEXT = ( PFNGLLOCKARRAYSEXTPROC )
      GetProcAdd ( "glLockArraysEXT" );
      glUnlockArraysEXT = ( PFNGLUNLOCKARRAYSEXTPROC )
      GetProcAdd ( "glUnlockArraysEXT" );
    avec les variables globales
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PFNGLLOCKARRAYSEXTPROC glLockArraysEXT = NULL;
    PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXT = NULL;
    Jusque là, pas de soucis (enfin je crois).
    Passons à la fonction d'affichage.
    j'ai déclaré les vertex array en temps que variables globales, pas de problème, je les fait afficher avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     glInterleavedArrays(GL_T2F_V3F, 0, data); 
      glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_INT, indices);
    mais là où je suis perdu c'est pour l'utilisation de glUnlockArraysEXT ( ); et de glLockArraysEXT ( );

    J'ai tenté de modifier ma fonction d'affichage comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     glUnlockArraysEXT ( );
    glInterleavedArrays(GL_T2F_V3F, 0, data); 
    glLockArraysEXT ( 0, ( GLsizei ) 1 );
      glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_INT, indices);
    mais cela produit une erreur de segmentation à l'exécution.

    quelqu'un pourrait-il m'aider à précompiler ces fameux vertex array ?

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    deja verifie si il a bien recuperé les addresses des fonctions...

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    boilà, j'ai réussi à exécuter tout ça sans erreur , suffisait de mettre

    glLockArraysEXT ( 0, ( GLsizei ) 4 ); et non

    glLockArraysEXT ( 0, ( GLsizei ) 1 ); (et oui, dans mon cas, mon vertex aray contenait 4 vertex).
    mais ce qui m'étonne c'est que je ne gagne pas en performances.
    à chaque frame, je fais afficher en vertex array ce que j'affichais avant en spécifiant les vertex dans la fonction d'affichage. je m'attendais à une amélioration des performances mais même pas .....

    Y a-t-il une close écrite en tout petit qui serait nécessaire ?

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    oui, il y a même une close ecrite en tres gros , c'est de ne pas faire de test avec just un polygone... essaye sur des models avec de plusieurs millier de polygone, tu devrait voir une difference.

    ha et j'y pense, ne pas compiler le vertex array a chaque frame, car ca veut dire qu'il renvoi tout les vertex a chaque fois a la carte graphique, ce qui revient a la même chose que si tu utilise un vertex array normal...

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

Discussions similaires

  1. Vertex Arrays et couleur
    Par pot dans le forum OpenGL
    Réponses: 6
    Dernier message: 07/05/2005, 18h46
  2. Vertex arrays
    Par goutbouyo dans le forum OpenGL
    Réponses: 9
    Dernier message: 06/01/2005, 13h11
  3. [sdl+glut] une console en trop
    Par khayyam90 dans le forum GLUT
    Réponses: 3
    Dernier message: 02/08/2004, 09h15
  4. vertex array
    Par Jbx 2.0b dans le forum OpenGL
    Réponses: 2
    Dernier message: 12/07/2004, 11h37
  5. Performance des vertex array
    Par Mathieu.J dans le forum OpenGL
    Réponses: 13
    Dernier message: 25/06/2004, 10h47

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