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

GLUT Discussion :

Evénement: 2 touches simultanément


Sujet :

GLUT

  1. #1
    lamelfa
    Invité(e)
    Par défaut Evénement: 2 touches simultanément
    Bonjour,
    je désirerais savoir s'il est possible de gérer les cas où deux touches sont pressées simultanément dans openGL?
    Mon problème est qu'en appuyant sur une deuxième touche (alors qu'une première est pressée...), l'effet de la première est annulé et seul celui du deuxième est pris en comtpe désormais. Suis-je clair?

    Merci...

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par lamelfa
    Bonjour,
    je désirerais savoir s'il est possible de gérer les cas où deux touches sont pressées simultanément dans openGL?
    Mon problème est qu'en appuyant sur une deuxième touche (alors qu'une première est pressée...), l'effet de la première est annulé et seul celui du deuxième est pris en comtpe désormais. Suis-je clair?

    Merci...
    Bonjour c'est forćement le mauvais forum vu que OpenGL ne gére que le côté graphique... Tu utilises quoi pour ouvrir la fenêtre car ce sera la même API qui va gérer le clavier (généralement)

    Jc

  3. #3
    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 : 40
    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
    OpenGL ne connaît pas la gestion des touches. Tu utilises quelle bibliothèque pour gérer les évènements ?

  4. #4
    lamelfa
    Invité(e)
    Par défaut
    Oui, oublié de préciser que c'était sous glut désolé
    J'ai trouvé une solution de secours mais si vous avez une réponse à ma question, n'hésitez pas,
    merci

  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 : 40
    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
    Bizarre, je pensais que GLUT gérait ça. Au pire tu peux maintenir des booléen correspondant à l'état de tes touches, ainsi lorsque tu appuies sur une touche tu ne fais que mettre un booléen à vrai, et les autres booléens potentiellement à vrai le restent.

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Sous glut, la meilleure solution est d'avoir un tableau représentant l'état des touches. Tu mets la case à vrai lorsque tu appuies sur la touche et à faux lorsque tu relaches la touche.

    Ensuite, il suffit de consulter le tableau en question.

    Jc

  7. #7
    lamelfa
    Invité(e)
    Par défaut
    Merci pour votre aide,
    je pensais qu'il existait une métode plus simple sous glut pour gérer ça...tant pis je vais utiliser le tableau de booléens alors

  8. #8
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Sous glut tu as les fonctions:
    glutSpecialFunc qui est appelé chaque fois qu'une touche speciale est pressée
    et glutSpecialUpFunc qui est appelé chaque fois qu'une touche spéciale est relaché
    Tu as aussi:
    glutKeyboardFunc appelé chaque fois qu'une touche normale est pressée et
    glutKeyboardUpFunc chaque fois qu'une touche normale est relachée.

    Ces 4 fonctions prennent en argument le nom de la fonction qui gere tes E/S clavier. Donc comme c'est dit plus haut tu cree un tableau booléen de 512 cases et chaque fois qu'une touche est pressée ca apelle glutSpecialFunc ou glutKeyboardFunc et dans ces fonctions tou ce que tu fais c'est mettre à true la case du tableau correspondant au code ascii de la touche ou au define que tu as defini pour les touches speciales. Et tu fai la meme chose pour les fonctions Up sauf que la tu met la case a false.

    Pour la souris c'est un peut différent il faut jouer avec les fonctions
    glutMouseFunc,glutMotionFunc,glutPassiveMotionFunc.
    glutPassiveMotionFunc: est appelé quand les touches sont relaché
    glutMouseFunc: est appelé quand une touche est pressée et elle te donne sont etat.
    glutMotionFunc: est appelé quand une touche est pressée et que la souris se deplace donc à priori quand glutPassiveMotionFunc est appelé toutes les touches sont a false.
    Quand glutMouseFunc est appelé il y a une des touche qui et a true et enfin tout apel de glutMotionFunc passe d'abord par un apel de glutMouseFunc puisqu'on appuie d'abord sur la touche et ensuite on deplace la souris. Si tu veux d'autres precisions hesite pas.

Discussions similaires

  1. [SFML] - Appui sur deux touches simultanément
    Par skysee dans le forum SFML
    Réponses: 1
    Dernier message: 17/09/2008, 09h30
  2. Réponses: 2
    Dernier message: 05/05/2008, 13h16
  3. Evènement : Deux touches appuyées simultanément
    Par Matt112 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 21/01/2008, 09h19
  4. Touches simultanées Delphi 2005
    Par ROCHER1 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 28/08/2005, 23h13
  5. [KeyEvent] plusieurs touches simultanées enfoncées
    Par gege2mars dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 07/01/2004, 11h44

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