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

wxWidgets Discussion :

Intégration d'OpenGL dans wxWidget


Sujet :

wxWidgets

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut Intégration d'OpenGL dans wxWidget
    Bonjour.
    D'après tous les tutos que j'ai lu, l'intégration d'OpenGL dans une appli wxWidget a l'air simple, mais je bloque sur un problème qu'apparemment personne ne possède.

    Ca fait déjà pas mal de temps que je développe une appli wxWidget, avec l'API wxWidget 2.8.0, et je n'ai eu aucun pb d'intégration.
    Selon, tous les tutos, l'intégration d'openGl commence comme ça (c'est un bout de mon code):

    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
     
    #include <wx/wx.h>
    #include <wx/glcanvas.h>
     
    class GL_Window : public wxGLCanvas
    {
    public:
    	// Constructeur
    	GL_Window(wxWindow* parent, wxWindowID id, const wxPoint& pos,
                      const wxSize& size, long style=0, 
                      const wxString& name="GLCanvas", int* attribList = 0, 
                      const wxPalette& palette = wxNullPalette)
                      : wxGLCanvas(parent, id, pos, size, style,
    			       name, attribList, palette) {};
    	virtual ~GL_Window() {};
     
    	//===============================================
    	//  void draw()
    	//  
    	//  Dessine la scène en utilisant l'API OpenGL.
    	//===============================================
    	void draw();
    };
    Or, le compilateur me répond : error C2504: 'wxGLCanvas' : classe de base non définie

    Si ça peut intéresser, j'ai aussi inclu, plus loin dans le code, les fichiers suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <wx/dc.h>
    #include <wx/gdicmn.h>
    Pouvez vous éclairer ma lanterne ?
    Merci d'avance.

    Martin

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il me semble qu'il faut compiler wxWidgets en définissant une option du genre USE_OPENGL.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Merci pour cette réponse rapide !

    Je suis sous VisualC 7.1, et je n'ai pas la moindre idée de comment je défini l'option dont tu me parles.
    Dans le code ?
    Dans les propriétés du projet ?

    Sinon, j'ai un peu regardé les fichiers "wx/glcanvas.h" et "wx/msw/glcanvas.h"...
    Dans "wx/glcanvas.h", l'ensemble des définitions (dont l'acces à la classe wxGlCanvas) est entourée d'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #if wxUSE_GLCANVAS
    ....
    #endif
    Donc je suppose que mon wxUSE_GLCANVAS doit être à 0.

    J'ai essayé de lui faire un
    "#define wxUSE_GLCANVAS 1", mais il n'a pas aimé ("redéfinition de wxUSE_GLCANVAS")

    Martin

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Il faut modifier le fichier setup.h, qui contient par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define wxUSE_GLCANVAS 0
    et recompiler wxWidgets.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Donc je suppose que mon wxUSE_GLCANVAS doit être à 0.

    J'ai essayé de lui faire un
    "#define wxUSE_GLCANVAS 1", mais il n'a pas aimé ("redéfinition de wxUSE_GLCANVAS")
    Effectivement ce n'est pas à toi de le définir, il l'est déjà dans setup.h. Il faut juste que tu ailles changer sa valeur, donc 1 au lieu de 0.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Je te remercie, ça fonctionne bien maintenant, mais toujours est-il que je ne trouve pas ça très propre d'aller modifier un fichier directement dans l'API wxWidget.
    Par exemple, si je développe en parallèle un autre projet qui utilise la même API, mais n'utilise pas openGL , ça ne marchera plus.

    Autre question que je me pose: je ne comprends pas pourquoi cette manip est spécifiée dans aucun tuto.

    Enfin bon, le principal, c'est que ça marche, on peut donc cloturer le sujet.

    Merci, bye

    Martin

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je te remercie, ça fonctionne bien maintenant, mais toujours est-il que je ne trouve pas ça très propre d'aller modifier un fichier directement dans l'API wxWidget.
    Ce n'est pas "aller modifier un fichier directement dans l'API", c'est juste "configurer l'API pour qu'elle fournisse les modules dont tu as besoin"
    C'est un peu comme les gens qui recompilent leur noyau Linux.
    Et si ces modules ne sont pas tous activés par défaut, c'est pour éviter des dépendances inutiles dans le cas où tu ne les utiliserais pas.

    Autre question que je me pose: je ne comprends pas pourquoi cette manip est spécifiée dans aucun tuto
    Je n'ai pas fait beaucoup de wxWidgets et je me rappelais très bien de ce genre de manips pour activer ou non certains modules ; j'ai donc dû le lire quelque part où c'était clairement expliqué

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Ok, merci pour ces explications

    Une dernière chose, dans setup.h, il me demande de lui fournir les lib d'openGL (opengl32.lib & glu32.lib). Sont elles déjà disponibles dans l'environnement VC, ou dois-je les télécharger ?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Ils sont déjà contenus dans le répertoire \Vc7\PlatformSDK\Lib de VisualStudio, Martin

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Merci Martin

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

Discussions similaires

  1. Intégration d'une fenêtre opengl dans un winform C#
    Par vinch999 dans le forum OpenGL
    Réponses: 3
    Dernier message: 16/12/2010, 12h09
  2. Intégration d'OpenGL dans une interface Qt
    Par Architekth dans le forum Qt
    Réponses: 5
    Dernier message: 21/09/2010, 17h03
  3. Réponses: 10
    Dernier message: 10/02/2009, 10h25
  4. Intégration d'OpenGL dans wxWidget - la deuxième
    Par martt_1er dans le forum wxWidgets
    Réponses: 9
    Dernier message: 20/05/2007, 20h04

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