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

GTK+ avec C & C++ Discussion :

OpenGL avec Gtk3/Cairo, problemes de saccades


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 17
    Par défaut OpenGL avec Gtk3/Cairo, problemes de saccades
    Salut les développeurs,

    J'ai créé un programme de modélisation, animation, rendu 3d appelé Gloss3D. Au début, j'utilisais OpenMotif pour la partie interface graphique. Mais j'ai aussi écrit un front-end basé sur GTK+3 :

    Nom : GTK_GLOSS.png
Affichages : 909
Taille : 146,3 Ko

    Frontend Motif :

    Nom : MOTIF_GLOSS.png
Affichages : 852
Taille : 115,4 Ko

    Mais j'ai un problème avec le widget OpenGL. Sachant que gtkglarea n'existe pas pour GTK3, j'ai écrit mon propre widget en utilisant les fonctions x11 offertes par gdk. Le widget est dans SOURCE_ROOT/g3dui/gtk3/g3duiview.c. Quand on tourne autour d'un object low-poly, l'affichage est fluide, mais quand je crée un objet avec beaucoup de polygones, c'est non seulement saccadé (ça, c'est normal), mais en plus les saccades sont irrégulières (le framerate est irrégulier). Je n'ai pas ce probleme avec la version Motif/X11. Les saccades se produisent a intervalles réguliers.

    Vous pouvez télécharger le code source ici : http://velotrip.free.fr/gloss3d-beta-0.2.3.tar.gz[/url]

    compiler avec :

    ./configure --prefix=/usr --with-gtk3
    make
    ensuite executer ./gloss3d. Pas besoin de faire "make install", lancez le depuis le répertoire local.

    Ensuite copier le code source dans un autre répertoire pour la version Motif, puis faites :
    ./configure --prefix=/usr --with-motif
    make
    ./gloss3d

    Créez n'importe quelle primitive, genre une sphère, convertissez la en mesh en utilisant le bouton Nom : convert_primitive.png
Affichages : 365
Taille : 1,2 Ko et utilisez le panneau a droite pour subdiviser la sphère. Tournez autour de la sphère en utilisant le bouton de rotation Nom : orbit.png
Affichages : 852
Taille : 654 octets. Sur mon ordi plutôt vieux, l'affichage saccade vers la subdivision niveau 3 ou 4.

    Pour la version Motif, dans SOURCE_ROOT/g3dui/motif/g3duiview.c, ligne 289, pour forcer le re-dessin OpenGL, je fais juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                XClearArea ( XtDisplay ( ogl ), XtWindow  ( ogl ), 0, 0, 0, 0, True );
    et ça marche sans souci. Les saccades sont régulières lorsque les objets sont "lourds".

    Pour la version GTK3, le code qui pose problème est dans SOURCE_ROOT/g3dui/gtk3/g3duiview.c, ligne 747 a 750 dans l’évènement GDK_MOTION_NOTIFY :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    gtk_view_redraw_area ( widget ); /* <---- redessiner le GL Drawing Area */
     
                    while (gtk_events_pending ()) gtk_main_iteration ( ); /* <---- attendre la fin du dessin ***/
    Si je n'utilise pas la boucle while, les saccades sont encore plus irrégulières. Est-ce que quelqu'un aurait une solution pour que le comportement soit le même que dans la version Motif/X11 ?


    Merci de votre aide.

    Gary.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    J'ai tenté une compilation mais... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g3dimage.c:49:19: fatal error: Xm/Xm.h: No such file or directory
     #include <Xm/Xm.h>
                       ^
    compilation terminated.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 17
    Par défaut
    Salut Gerald3d.

    Merci de m'avoir remonté le souci. J'ai corrigé les inclusions. Tu devrais pouvoir compiler ça :

    http://velotrip.free.fr/gloss3d-beta-0.2.32.tar.gz

    je précise que pour la version Motif, il y a encore beaucoup de warnings a la compilation car c'est en cours de dev. Pour la version Gtk+3 en revanche, c'est a peu près propre.


    A plus.

    Gary.

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Je progresse . Mais cette fois-ci c'est peut être de mon côté qu'il manque quelque chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    In file included from common/g3dui.c:30:0:
    ../include/g3dui.h:31:26: fatal error: GL/GLwMDrawA.h: No such file or directory
     #include <GL/GLwMDrawA.h>
    Peux-tu m'éclairer ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 17
    Par défaut
    Aaaargh, je te corrige ça dans 10 minutes

    Gary.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 17
    Par défaut
    Corrige. Dis moi s'il y a un souci.

    http://velotrip.free.fr/gloss3d-beta-0.2.33.tar.gz


    Gary.

  7. #7
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Là je pense que tu vas craquer :
    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
    In file included from /usr/include/libpng12/png.h:540:0,
                     from ../include/r3dnet.h:64,
                     from ../include/g3dui.h:38,
                     from common/g3dui.c:30:
    /usr/include/libpng12/pngconf.h:371:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
                __pngconf.h__ in libpng already includes setjmp.h;
                         ^
    /usr/include/libpng12/pngconf.h:372:12: error: unknown type name '__dont__'
                __dont__ include it again.;
                ^
    /usr/include/libpng12/pngconf.h:372:29: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'it'
                __dont__ include it again.;
                                 ^
    /usr/include/libpng12/pngconf.h:372:29: error: unknown type name 'it'
    common/g3dui.c: In function 'common_g3dui_dispatchGLMenuButton':
    common/g3dui.c:303:5: warning: implicit declaration of function 'addMenuListButton' [-Wimplicit-function-declaration]
         if ( tool_flags & OBJECTMODETOOL ) addMenuListButton ( gui, lobjmenu, mou );
         ^
    Makefile:1149: recipe for target 'common/g3dui.lo' failed

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2009, 19h10
  2. probleme Texturage en openGL avec SDL
    Par bahamutdragoon dans le forum SDL
    Réponses: 0
    Dernier message: 24/05/2009, 14h36
  3. GTK et OPENGL avec gtkglarea
    Par Vincent|Dev dans le forum OpenGL
    Réponses: 1
    Dernier message: 09/02/2005, 13h33
  4. erreurs opengl avec devcpp
    Par Vermin dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/04/2004, 14h50
  5. comment utiliser de l'OpenGL avec du Java ?
    Par DjiZ dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/01/2004, 15h21

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