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

Qt Discussion :

Lier GLEW à un projet Qt 4 [2D/3D]


Sujet :

Qt

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 145
    Points : 392
    Points
    392
    Par défaut Lier GLEW à un projet Qt 4
    Bonsoir à tous,

    je m'acharne depuis quelques heures (mais là j'ai plus la force) sur un problème : lier GLEW à un projet Qt.

    Comme je ne me satisfais pas de OpenGL 1.1 utilisé par Qt4.8.1, ni de OpenGL/ES utilisé par Qt5, j'ai suivi cet exemple pour "passer en 3.3" :
    https://qt-project.org/wiki/How_to_u...rofile_with_Qt

    Le code est exactement le même...

    C'est pour utiliser les fonctions glGenVertexArrays et glBindVertexArray, que ça bloque... Le compilateur m'agresse avec les célèbres "undefined reference to...[fonctions ci-dessus]"

    Je pense avoir épuisé toutes les solutions possibles (pour toutes, j'avais la ligne LIBS += -LC:/cheminGlew -lglew32 dans le .pro) :
    - les .lib compilés avec à l'origine avec VisualStudio
    - compiler GLEW avec MinGW
    - compiler GLEW en utilisant MSYS
    - renommer un .lib en .a (c'est dire le désespoir) (le pire est que ça a fonctionné, mais le programme plantait)

    Je pense que je vais m'arrêter pour ce soir, ça m'évitera la crise de nerfs.

    Auriez-vous une petite idée ?
    Voire même un petit tuto bien expliqué ?

    Savez-vous si la 5.0.2 de Qt, qui permettra l'utilisation des dernières versions de OpenGL, permettra aussi l'utilisation de GLEW ?

    Merci à tous...

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 617
    Points
    15 617
    Par défaut
    Bonsoir et bienvenue sur le forum

    Alors, pour Qt 4.8, ça n'utilisait pas OpenGL 1.1, c'est Windows qui propose par défaut GL 1.1. Mais Qt utilisait au moins GL 2, voir plus (cd les geometry shader)

    Pour Qt 5, c'est un peu plus compliqué. Cela se base sur ANGLE, donc sur GL ES 2. Pour utiliser le code que tu cites, il faut compiler Qt avec l'option "-opengl-support" (ou un truc comme ça)

    Pour GLEW, il faut faire attention à une histoire d'ordre d'inclusion des en-tête (mais je me souviens plus des détails, tu trouveras sur internet, je crois qu'il faut mettre les en-tête de glew en premier)
    Il faut utiliser le même compilateur pour GLEW que celui utilisé pour Qt

    Pour Qt 5.0.2, non, aucune chance que cela intègre GLEW. Qt intégrera les fonctions GL donc plus besoin de GLEW
    Perso, je préfère de toute façon utiliser QGLContext::getProcAddress() pour importer les fonctions, ça évite d'avoir plusieurs libs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 145
    Points : 392
    Points
    392
    Par défaut
    Merci bien pour cette réponse précise

    J'avais déjà tenté de compiler Qt avec -opengl support mais il y avait une erreur, je retenterai si je n'ai pas la patience d'attendre la 5.0.2.

    Je débute en OpenGL (par contre Qt je suis relativement rompu je pense).

    Pourrais-tu m'éclaircir sur un autre point ?

    Qt intégrera les fonctions GL donc plus besoin de GLEW
    Ainsi, plus besoin de passer par GLEW (et donc par glGenVertexArrays) pour "créer un VBO/VAO" (je m'excuse pour la pauvreté des termes ) ?

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 617
    Points
    15 617
    Par défaut
    GLEW ne fait qu'initialiser les fonctions GL, ce que n'importe qui peut faire aussi. Qt fera exactement la même chose que GLEW, donc pas besoin d'avoir en double. Le principal est d'avoir la fonction glGenVertexArrays, que ce soit avec Qt, GLEW ou même manuellement

    En plus, Qt fournit des classes plus haut niveau que de simples appels GL. Voir par exemple QGLFrameBufferObject. Normalement, il y aura des classes dédiées pour les vertex array

    (c'est -opengl desktop pour la compilation)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 145
    Points : 392
    Points
    392
    Par défaut
    Merci !

    Je vais nettoyer toute trace de GLEW et commencer à suivre tes tutoriels

  6. #6
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 787
    Points
    1 787
    Par défaut
    Je me permet d'ajouter mon avis sur le sujet, étant repassé dernièrement sur glew suite à la découverte d'un bug très bloquant présent sur tout les Qt 4.8.x.

    En effet sous windows et en release uniquement, quelque soit le compilateur (Visual ou MinGW) l'accès aux fonctions avancées d'OpenGL génère un crash (par exemple glActiveTexture, glGenerateMipmap...). Le bug est reporté ici . On peut trouver d'autres infos en tapant "QGLFunctions release crash".
    Ce bug n'est résolu qu'en Qt 5.0, et ayant comme toi décidé de rester encore temporairement en 4.8.4 en attendant que Qt 5 soit un peu plus mûr, j'ai du me résoudre à passer sous glew.

    Si tu veux un coup de main pour installer glew du coup, comme c'est tout frais pour moi. Ah, pour info, le passage par glew n'empêche pas d'utiliser les fonctions avancées de Qt (QGLBuffer, QGLShaderProgram...).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/02/2009, 11h11
  2. lier deux projets en csharp visu 2008
    Par malvax dans le forum C#
    Réponses: 1
    Dernier message: 12/07/2008, 16h55
  3. Lier Commons HttpClient (Jakarta) dans mon projet
    Par Cethywolf dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 08/06/2007, 16h35
  4. Lier une bibliothèque à un projet
    Par Ivory69 dans le forum Dev-C++
    Réponses: 10
    Dernier message: 07/06/2007, 14h49
  5. [Système d'aide] Lier mon *.hlp à mon projet
    Par termerair dans le forum MFC
    Réponses: 2
    Dernier message: 18/01/2005, 13h39

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