Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Qt > EDI > Qt Creator
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/03/2012, 23h56   #1
Cpowa
Invité régulier
 
Inscription : 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.
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 08h22   #2
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 377
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 : 10 377
Points : 39 574
Points : 39 574
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.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 09h16   #3
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
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.)
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 10h11   #4
gbdivers
Responsable C++

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 313
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 313
Points : 19 520
Points : 19 520
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 ?
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 10h30   #5
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
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 ?
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 12h09   #6
gbdivers
Responsable C++

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 313
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 313
Points : 19 520
Points : 19 520
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
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 12h13   #7
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 377
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 : 10 377
Points : 39 574
Points : 39 574
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
Citation:
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.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 12h52   #8
gbdivers
Responsable C++

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 313
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 313
Points : 19 520
Points : 19 520
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
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 13h44   #9
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
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
?
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 13h58   #10
gbdivers
Responsable C++

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 313
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 313
Points : 19 520
Points : 19 520
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
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 14h27   #11
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
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
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 15h18   #12
gbdivers
Responsable C++

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 313
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 313
Points : 19 520
Points : 19 520
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
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 15h32   #13
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
Alors comment je fais pour inclure manuellement openGL ?
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 15h40   #14
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 377
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 : 10 377
Points : 39 574
Points : 39 574
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.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 15h47   #15
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
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.
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 16h57   #16
gbdivers
Responsable C++

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 313
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 313
Points : 19 520
Points : 19 520
Quand je disais d'inclure OpenGL, il suffit de faire comme pour FreeGlut :
Citation:
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
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 17h24   #17
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
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 ?
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 17h33   #18
gbdivers
Responsable C++

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 313
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 313
Points : 19 520
Points : 19 520
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 ?
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 17h55   #19
Cpowa
Invité régulier
 
Inscription : novembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 77
Points : 9
Points : 9
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.
Cpowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h27.


 
 
 
 
Partenaires

Hébergement Web