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 :

CustomEvent - wxGLCanvas - viewport


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut CustomEvent - wxGLCanvas - viewport
    Hello,

    L'application consiste d'un frame qui a un glCanvas.
    Il y a du rendu 3d sur le canvas, et je construis par dessus un GUI en 2D.
    J'utilse le picking pour intéragir avec le GUI.

    Tout ça sur un écran multi-touch.

    Donc j'ai créé des événements personnalisés qui sont créés quand on pose un doigt ou bien quand on le déplace.

    Le problème que j'ai c'est qu'avec la souris j'arrive à "picker" les objets sur le canvas, mais avec le doigt cela ne marche pas.

    Ce que j'ai remarqué, c'est que en utilisant la souris, l'événement véhicule les propriétés du canvas, genre viewport et autre, par contre les événements persos ne le font pas.
    Et je me demande pourquoi?
    Le constructeur des événements persos:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    wxTouchEvent( wxWindow* win = (wxWindow*) NULL );
    Les événements sont générés dans la classe frame, mais ils sont rédirigés dans la classe du canvas et sont traités dans cette classe.

    Donc quand je crée l'objet my_event, je lui passe bien en paramètre le canvas, mais mais malgré ceci viewport a des données fausses.
    Pourtant quand je compare l'objet event reçu de la souris et du touché, m_eventObject est bien la classe canvas.

    Est-ce quelqu'un aurait une idée où est-ce que je devrais chercher?

    Merci beaucoup
    Greg

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Je suis en train de chercher pourquoi ça va pas et j'ai remarqué que quand je clique avec la souris, ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glGetIntegerv (GL_VIEWPORT, viewport);
    retourne les valeurs viewport correctes et quand l'événement est déclanché par le wxTouchEvent il retourne pas les valeurs correctes.

    Quelqu'un saurait pourquoi?

    Merci
    Greg

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Un problème de thread ou un problème de contexte openGL (wxGLCanvas::SetCurrent)?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    J'ai un thread, mais il n'est pas lié au canvas opengl alors je ne sais pas si ça pourrais poser problème. En tout cas en mode souris ça marche bien.
    Et j'ai mis un SetCurrent() au début de l'event handler et ça ne change rien.
    Effectivement je pense aussi que le context n'est pas mis correctement quand il y a le custom event, mais je ne sais pas quoi regarder de plus.
    Surtout que j'appelle SetCurrent().

    Merci
    Greg

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Pour faire un test, est-ce que ce serait possible de refaire un contexte openGL dans le handler?

    J'ai essayé de setter le viewport, mais cela n'avait pas l'aire de fonctionner.
    Est-ce qu'il y a un autre moyen?

    Merci
    Greg

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Bon ok j'ai résolu le problème.

    Dans la classe glcanvas je mets le contexte dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glContext = new wxGLContext(this);
    et dans le handler de l'événement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetCurrent(*glContext);
    et ça marche.

    Merci 3DArchi!
    Greg

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/10/2006, 20h40
  2. problème avec wxGLCanvas
    Par f56bre dans le forum wxWidgets
    Réponses: 3
    Dernier message: 22/09/2006, 09h23
  3. JScrollPane : modification du viewport
    Par Invité dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/08/2006, 17h13
  4. [Swing][JScrollPane]le Viewport ne s'adapte pas au contenu
    Par Cyberwan dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 01/02/2006, 21h40
  5. taille du texte dans un viewport
    Par pitounette dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/07/2002, 13h06

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