begin process at 2012 02 13 13:31:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

OpenGL et Glut: saisie clavier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

OpenGL et Glut: saisie clavier

lundi 25 avril 2005 à 23:19:07 | OpenGL et Glut: saisie clavier

bluelambda

Salut à tous !

Voilà j'ai fait un petit programme qui utilise OpenGL avec GLUT.

C'est un programme très basique, avec juste une fonction d'affichage opengl qui affiche quelques lignes, une fonction main, et une fonction clavier définie par glutKeyboardFunc qui attend qu'on appuie sur ECHAP pour quitter.

A un certain moment dans le programme, je lance une fonction. Peu importe où, ce n'est pas le prolème.
J'aimerai bien ajouter dans cette fonction un moment où elle demande à l'utilisateur d'appuyer sur une touche, et tant qu'il ne le fait pas la fonction attend.

En gros je voudrais faire pareil qu'avec un programme console quand on utilise getch(), sauf que là je suis en OpenGL, et je recherche une alternative à getch().

Je ne peux pas utiliser la fonction clavier définie par glutKeyboardFunc, car celle-ci ne peut être activée uniquement si je suis hors de la fonction. De plus elle ne peut être activée que par Glut lui même car c'est lui qui lui transmet la touche pressée par l'utilisateur. Alors que moi ce que je veux c'est récupérer la touche pressée sans passer par la fonction clavier.

Donc, quelqu'un pourrait m'aider en m'expliquant comment demander une saisie clavier à l'utilisateur au coeur d'une fonction en utilisant GLUT ?
lundi 25 avril 2005 à 23:50:25 | Re : OpenGL et Glut: saisie clavier

luhtor

Le problème, c'est quoique tu fasses, glut va mémoriser la touche pressée, car tu peux pas l'interrompre (enfin il me semble) autrement que par un appel a exit(). Tes sur que il n'y a pas un autre moyen de faire ce que tu veux ? Tu peux préciser ?
mardi 26 avril 2005 à 00:02:53 | Re : OpenGL et Glut: saisie clavier

bluelambda

Je vais expliquer par un exemple ;)

Imaginons que mon programme se lance normalement, la fonction d'affichage est exécutée et tout et tout, bref normal quoi.

A la fin de la fonction d'affichage, une fois que tout a été affiché sur la scène, j'appelle une fonction appelée par exemple fonction_test.

Cette fonction va s'exécuter, et à un certain moment de son exécution, l'utilisateur doit presser une touche pour que la fonction_test poursuive son exécution.

Je ne sais pas comment faire cela. Comment récupérer des saisies clavier au milieu d'une fonction en cours d'exécution ?
Le top serait un truc un peu comme getch(), ou quelque chose comme ça.

Voici un petit shéma :

Fonction Affichage de Glut
    affichage de la scène
    lancement de fonction_test
Fin Fonction Affichage

fonction_test
    actions diverses
    question posée à l'utilisateur
    attente d'une saisie clavier (<= le point qui nous intéresse)
    actions diverses
fin fonction_test

Je ne peux pas me servir de la fonction clavier de Glut, car elle n'est accessible que quand le programme est au repos (c'est à dire quand je ne suis dans aucune fonction). Dans mon cas je suis dans la fonction_test, en plein milieu, et tant que je n'en sors pas, la fonction clavier de Glut ne peut être appelée.

J'ai été plus clair ou pas ? :P
mardi 26 avril 2005 à 10:57:24 | Re : OpenGL et Glut: saisie clavier

luhtor

Mais ta question posée a l'utilisateur, c'est affiché dans la fenetre openGL ? ou dans la console ?

"et tant que je n'en sors pas, la fonction clavier de Glut ne peut être appelée." Faudrait tester.

Mais sinon je sais pas comment faire ca, jamais eu besoin. Mais j'ai du mal a comprendre quand meme car, la question faut bien qu'elle s'affiche dans la fenetre OpenGL donc faut qu'il appelle la fonction d'affichage.
mardi 26 avril 2005 à 12:42:38 | Re : OpenGL et Glut: saisie clavier

bluelambda

J'ai donné cet exemple pour simplifier. La fonction en question est assez complexe, et elle ne demande rien à l'utilisateur, mais ne dois pas se poursuivre tant que celui-ci n'appuie pas sur une touche définie.


mardi 26 avril 2005 à 19:37:47 | Re : OpenGL et Glut: saisie clavier

bluelambda

Je vois que c'est pas clair :P
Bon en gros comment puis-je récupérer des saisies clavier sans avoir à passer par la fonction clavier définie par GlutKeyboardFunc ? J'aimerai faire un peu comme avec la fonction getch (on l'appelle, et elle met le résultat dans une variable) sauf que là je suis pas en mode console.


mercredi 27 avril 2005 à 21:31:58 | Re : OpenGL et Glut: saisie clavier

KeniiyK

Membre Club

Avec un  thread ca pourrai marcher :

Voici un petit shéma :
static bool ok=false;

Fonction Affichage de Glut
    affichage de la scène
    Thread (lancement de fonction_test) // une seule fois !!!!!!
Fin Fonction Affichage

fonction_test
    actions diverses
    question posée à l'utilisateur
    attente d'une saisie clavier (<= le point qui nous intéresse) -> if ( ok )
    actions diverses
fin fonction_test

fonction keyboard de glut
...
   case KEY : ok=true;
.....
fin fonction keyboard;

KeniiyK


Cette discussion est classée dans : fonction, programme, opengl, clavier, glut


Répondre à ce message

Sujets en rapport avec ce message

Mélanger OpenGL et Glut [ par tintin72 ] SalutJ'aimerai me servir des fonctions d'entrée clavier/souris proposées par Glut, mais j'ai vu que Glut s'initialise avec une fonction main façon C.i [Opengl][Glut][Dev- C++ 4.9.9.2] Comment fermer un programme correctement ? [ par whikie ] Bonjour a tous,La question est celle ci : comment je peux faire pour fermer mon programme correctement si je veux faire un programme completement port Probleme souris et clavier avec opengl et glut [ par Mick7 ] Salut, bon voila en faite c'est juste un probleme de fluidité quand j'essaye de tourner ou marcher tout va bien ca marche nickel mais si j'essaye de f Problème avec mon compilateur et OpenGL [ par deguelatore ] Bonjour a tous est voila mon problème:         Je programme sous DEV C++. Au début de mon programme, j'inclus GLUT.    # include .. Thread [ par llb91 ] Bonjour,Je recherche une solution à mon probléme que je vais essayer de décrire ci dessous. j'ai fait un programme "A" qui doit à un moment donné lanc Probleme application OpenGL/GLUT [ par zaraki21 ] Bonjour,actuellement en stage, je développe une application C++ utilisant OpenGL et GLUT. Mon programme lit des données à partir d' un fichier et génè compilation d'un programme C++ qui utilise glut avec Intel fortran [ par oswa ] Bonjour, Je fais un programmme C++ qui utilise la lib glut, et lorsque je le compile avec Intel Fortran ( j'ai mis les fichiers de opengl dans le repe CreateProcessWithLogonW [ par Rankin ] Salut à tous, J'ai créé un programme qui doit exécuter des commandes sous un compte admin. J'ai prévu le cas où un utilisateur simple exécute mon app problem avec opengl [ par oswa ] bonjour, j'ai un programme c++ sur windows qui utilise opengl et il est compilé par visual studio, ce programme permet de dessiner une piéce mécaniqu selection avec un rectangle elastique en opengl [ par oswa ] bonjour, j'ai un programme c++ qui utilise opengl, ce programme permet de dessiner une piéce mécanique maillé, dans mon programme j'ai réussi à selec


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,290 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales