Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 19 sur 19
  1. #1
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut Installer et utiliser GLUT (ou FreeGLUT)

    Bonsoir,

    J'adore QtCreator mais je n'ai jamais utilisé de libraire tierce jusqu'à maintenant.
    J'aimerais bien utiliser glut (ou freeglut qui est maintenu et libre), mais tout ce que j'ai essayé pour tenter de l'installer ne fonctionne pas.

    J'ai notamment tenté de suivre les instructions ce petite article: http://hanyulius.blogspot.com/2010/0...dows-with.html

    Mais j'ai des erreurs du genre:
    Code :
    1
    2
    3
    undefined reference to 'glClear@4'
    undefined reference to 'glEnd@0'
    etc...
    Pouvez-vous m'expliquer comment je dois m'y prendre ?

    Merci.

  2. #2
    Responsable 2D/3D/Jeux

    Avatar de LittleWhite
    Homme Profil pro Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    14 418
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Laurent
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 14 418
    Points : 67 593
    Points
    67 593

    Par défaut

    Bonjour,

    Ce que j'en vois, c'est que OpenGL n'est pas lié.
    Sous Linux, il faut rajouter -lGL dans le makefile, sous Windows, cela s'appelle OpenGL32.lib.
    Si vous utilisez qmake, regardez tout à la fin de cette page.
    Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    Non j'utilise la "flèche magique verte"

    Donc si je comprend bien comment tout ça fonctionne normalement en cliquant là dessus il fait son qmake tout seul comme un grand etc.

    Quand je regarde dans l'onglet projet le qmake consiste en un:

    Code :
    qmake fichier.pro -r -spec win32-g++ "CONFIG+=declarative_debug"
    J'ai tenté de rajouter "-opengl32" mais là ça fait plus rien du tout pas de compilation, pas d'erreur rien.

    (je précise que j'avais déjà rajouté "QT+=opengl" dans mon .pro mais que je l'enlève ou pas ça change rien.)

  4. #4
    Inactif


    Homme Profil pro Guillaume Belz
    Biochimiste
    Inscrit en
    novembre 2008
    Messages
    5 321
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Belz
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Biochimiste
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 321
    Points : 19 286
    Points
    19 286

    Par défaut

    Le "QT+=opengl" fait automatiquement le lien avec les libs nécessaire. Il n'y a donc pas besoin de l'ajouter manuellement (avec -lopengl). Par contre, le problème de vient pas de GLUT mais d'OpenGL.
    Si tu lances un des programmes d'exemple de QtOpenGL, est ce que ça marche ?

  5. #5
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    Ben ça dépend de l'exemple.

    "Grabber exemple" et "Framebuffer Object Exemple" fonctionnent mais pour "Cube openGL E.S 2.0" j'ai deux erreurs
    Code :
    1
    2
    3
    In member function 'void MainWidget::initTextures();'
    'GL_TEXTURE()' was not declared in this scope
    'glActiveTexture' was not declared in this scope
    Et pour l'exemple "Boxes" j'ai une erreur:
    Code :
    1
    2
    In member function 'virtual void QtBox::paint(Qpainter*, const QStyleOptionGraphicsItem*, QWidget*)':
    'gluPerspective' was not declared in this scope
    Exemples mal codés ou ça vient de moi ?

  6. #6
    Inactif


    Homme Profil pro Guillaume Belz
    Biochimiste
    Inscrit en
    novembre 2008
    Messages
    5 321
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Belz
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Biochimiste
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 321
    Points : 19 286
    Points
    19 286

    Par défaut

    Ca vient de toi
    Plus sérieusement, si l'un des exemples fonctionne, c'est que OpenGL est installé. Peut être un problème de version (glBegin et glClear sont dépréciés et supprimés d'OpenGL > 3.1). Vérifie ta version avec glGetString(GL_VERSION). Peut être aussi un problème de liens, teste avec Dependency Walker

  7. #7
    Responsable 2D/3D/Jeux

    Avatar de LittleWhite
    Homme Profil pro Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    14 418
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Laurent
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 14 418
    Points : 67 593
    Points
    67 593

    Par défaut

    En fait, depuis le début, je me demande pourquoi vous voulez utiliser FreeGLUT au lieu d'utiliser tout ce que donne Qt.
    Si on est dans le deuxième, alors en théorie il suffit de rajouter
    QT+=opengl
    Et pour le premier cas, sans QtOpenGL, alors il faut lier les bibliothèques, à l'aide du .pro.

    Sinon, il faut aussi vérifier la version d'OpenGL que vous utilisez.
    Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Inactif


    Homme Profil pro Guillaume Belz
    Biochimiste
    Inscrit en
    novembre 2008
    Messages
    5 321
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Belz
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Biochimiste
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 321
    Points : 19 286
    Points
    19 286

    Par défaut

    C'est un peu vrai... les seules fonctions qui ne sont pas dans Qt, ce sont les fonctions pour créer certains objets (cube, sphère, teapot... en attendant Qt3d). Pour le reste, il faut mieux utiliser Qt (fenêtre, menu, callback, etc.)
    Donc ajouter une lib juste pour créer quelques objets 3D (qui sont très faciles à créer directement à la main, sauf la teapot), c'est peut être un peu lourd

  9. #9
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    glGetString(GL_VERSION) me donne:

    Code :
    4.2.11399 Compatibility Profile Context

    Citation Envoyé par LittleWhite Voir le message
    En fait, depuis le début, je me demande pourquoi vous voulez utiliser FreeGLUT au lieu d'utiliser tout ce que donne Qt.
    En fait je cherche à faire un petit programme qui puisse s'exécuter sans librairie tierce sur Windows et GNU/Linux. Et si j'ai bien compris freeglut est exactement ce qu'il me faut puisqu'elle permet de créer un environnement openGL à partir du système de fenêtrage natif de l'OS. (et aussi parce que j'ai un code sous glut que j'aimerais réutiliser, j'y connais rien en openGL)


    Citation Envoyé par LittleWhite Voir le message
    Et pour le premier cas, sans QtOpenGL, alors il faut lier les bibliothèques, à l'aide du .pro.
    C'est pas ce que j'ai fait en faisant
    ?

  10. #10
    Inactif


    Homme Profil pro Guillaume Belz
    Biochimiste
    Inscrit en
    novembre 2008
    Messages
    5 321
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Belz
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Biochimiste
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 321
    Points : 19 286
    Points
    19 286

    Par défaut

    Ok, donc si tu veux pas Qt, il faut ajouter dans le .pro
    Du coup, l'option suivante ne doit pas être utilisée
    Pour ajouter une libs dans QtCreator, le plus simple est d'ouvrir le .pro et de cliquer sur le bouton droit, tu auras un menu avec "Ajouter une bibliothèque..."
    Sinon, manuellement, il faut écrire :
    On ne met pas le "lib" du début du nom de fichier et l'on met "-l" (L minuscule) pour indiquer que l'on veut link. Tu peux aussi ajouter "-L" (L majuscule) pour ajouter un répertoire de libs

  11. #11
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par gbdivers Voir le message
    Ok, donc si tu veux pas Qt, il faut ajouter dans le .pro
    Déjà fait (j'ai créer un projet C++ classique)

    Citation Envoyé par gbdivers Voir le message
    Du coup, l'option suivante ne doit pas être utilisée
    ok

    Citation Envoyé par gbdivers Voir le message
    Pour ajouter une libs dans QtCreator, le plus simple est d'ouvrir le .pro et de cliquer sur le bouton droit, tu auras un menu avec "Ajouter une bibliothèque..."
    Oui c'est ce que j'avais fait au début mais le problème est que dans "inclure bibliothèque externe" il demande un fichier .lib. Et freeglut n'en a pas.


    C'est pourquoi j'ai placé les 4 fichiers headers qui se trouvaient dans "freeglut/include/GL" dans le dossier "C/QtSDK/mingw/include/GL" et les deux fichiers .a qui se trouvaient dans "freeglut/lib" dans le dossier "C/QtSDK/mingw/lib".
    Et le fichier freeglut.dll sans mon system32

    puis j'ai tenté diverse écriture:

    Code :
    1
    2
    3
    LIBS += libfreeglut // me fait les erreurs
    LIBS += -lfreeglut //idem
    LIBS += freeglut //freeglut: No such file or directory

  12. #12
    Inactif


    Homme Profil pro Guillaume Belz
    Biochimiste
    Inscrit en
    novembre 2008
    Messages
    5 321
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Belz
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Biochimiste
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 321
    Points : 19 286
    Points
    19 286

    Par défaut

    Je n'ai pas été clair. Comme tu n'inclues pas Qt, la commande QT+=opengl ne fonctionne pas (le module QtOpenGL n'est pas inclut dans le projet) et donc Qt ne se charge d'aucune inclusion de lib. Il faut donc le faire manuellement, pour FreeGLUT mais aussi pour OpenGL

  13. #13
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    Alors comment je fais pour inclure manuellement openGL ?

  14. #14
    Responsable 2D/3D/Jeux

    Avatar de LittleWhite
    Homme Profil pro Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    14 418
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Laurent
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 14 418
    Points : 67 593
    Points
    67 593

    Par défaut

    Et puis, si vous n'avez pas le freeglut.lib (car Windows utilise des .lib), il faut le compiler.
    (On peut aussi trouver des bibliothèques pré-compilées)

    Et puis, pour OpenGL, la bibliothèque existe de base. Mais si vous supprimez tout de Qt ? ... Pourquoi ne pas lire ce tutoriel : http://jeux.developpez.com/tutoriels/cours-opengl/
    Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  15. #15
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par LittleWhite Voir le message
    Et puis, si vous n'avez pas le freeglut.lib (car Windows utilise des .lib), il faut le compiler.
    (On peut aussi trouver des bibliothèques pré-compilées)
    Ben il me semblait justement avoir pris un pré-compilé "freeglut-MinGW-2.6.0-3.mp.zip"
    En totu cas c'est ce qui est dit ici: http://hanyulius.blogspot.com/2010/0...dows-with.html

    Je vais voir si je peux en trouver un autre.
    Edit: non je tombe toujours sur le même qui semble être celui de référence.
    Citation Envoyé par LittleWhite Voir le message
    Et puis, pour OpenGL, la bibliothèque existe de base. Mais si vous supprimez tout de Qt ? ... Pourquoi ne pas lire ce tutoriel : http://jeux.developpez.com/tutoriels/cours-opengl/
    Ouais elle est de base sur pas mal d'ordi c'est pourquoi je compte bien l’utiliser. Mais je n'ai pas besoin de Qt (raisons cité ci-dessus), mais j'aime Qt-creator.

    J'avais regardé le tuto mais il n'explique pas comment faire avec Qt-creator.

  16. #16
    Inactif


    Homme Profil pro Guillaume Belz
    Biochimiste
    Inscrit en
    novembre 2008
    Messages
    5 321
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Belz
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Biochimiste
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 321
    Points : 19 286
    Points
    19 286

    Par défaut

    Quand je disais d'inclure OpenGL, il suffit de faire comme pour FreeGlut :
    LIBS += -lopengl32
    Attention, tu as peut être plusieurs libopengl32.dll (par exemple dans ton windows/system et dans ton répertoire d'install de ton driver). Vérifie le chemin et le nom de la lib

  17. #17
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    A priori ça a l'air de fonctionner car je n'ai plus qu'une erreur à la compilation.
    Mais je sais pas si ça vient du code ou pas.
    J'ai utilisé le code exemple de wikipedia:http://fr.wikipedia.org/wiki/OpenGL_utility_toolkit

    Pouvez-vous me donner un code minimal pour être certain que ça fonctionne ?

  18. #18
    Inactif


    Homme Profil pro Guillaume Belz
    Biochimiste
    Inscrit en
    novembre 2008
    Messages
    5 321
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Belz
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Biochimiste
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 321
    Points : 19 286
    Points
    19 286

    Par défaut

    Code :
    1
    2
    3
    4
    5
    6
    #include <GL/glut.h>
    main (int argc, char *argv[])
    {
      /* initialisation de GLUT */
      glutInit (&argc, argv);
    }
    Si tu appelles la moindre fonction de glut, tu dois obligatoirement avoir linké glut et opengl
    Quand tu dis plus d'erreur, c'est après avoir ajouté -lopengl32 ?

  19. #19
    Invité régulier
    Inscrit en
    novembre 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 77
    Points : 9
    Points
    9

    Par défaut

    Le code compile donc je pense que c'est bon mais bizarre que celui de wikipedia me donne une erreur.

    Citation Envoyé par gbdivers Voir le message
    Si tu appelles la moindre fonction de glut, tu dois obligatoirement avoir linké glut et opengl
    C'est le cas (en fait freeglut mais à ce qu'il parait c'est compatible glut)

    Citation Envoyé par gbdivers Voir le message
    Quand tu dis plus d'erreur, c'est après avoir ajouté -lopengl32 ?
    Oui.


    Edit: en fait je suis pas sur que ça fonctionne car quand je fais:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <GL/glut.h>
    int main (int argc, char *argv[])
    {
        glutInit (&argc, argv);
     
          /* création d'une fenêtre OpenGL RVBA avec en simple mémoire tampon
             avec un tampon de profondeur */
          glutInitDisplayMode (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH);
          glutInitWindowSize (350, 300);
          glutCreateWindow ("Une fenêtre OpenGL avec GLUT");
     
     
          return 0;
    }
    Il m'ouvre pas de fenêtre, juste une console.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •