mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012
-
12 juil. 2005 à 23:25
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 2007
-
15 juil. 2005 à 10:20
Est-il possible d'executer des opérations juste avant la fonctions pointée par glutKeyboardFunc ?
En gros ma fonction met une variable à -0.5 en fonction de la touche
appuyée et je voudrais que toutes les variables sooient inits à 0 juste
avant que le clavier soit détecté, à chaque boucle du prog. C'est
pour créer un effet d'allé venue sur la variable en question. Elle est
à -0.5 uniquement quand la touche en question est à l'état bas, sinon
elle est à 0.
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 15 juil. 2005 à 09:57
Je crois que g trouvé l'astuce pour les touches : Ce n'est ptet pas
pour rien qu'y a une fonction glutKeyboardUpFunc qui repère quand on
lache une touche ! C'est exactement ce qu'il me fallait !
Identifie la nouvelle fonction de rappel pour le repos.
<LI value=0>Description</LI></OL>
La fonction glutIdleFunc établit la fonction de rappel au repos de telle sorte que GLUT peut effectuer des tâches de traitement en arrière-plan ou effectuer une animation continue lorsque aucun événement n'est reçu. La fonction de rappel n'a aucun paramètre. Cette fonction est continuellement appelé lorsque aucun événement n'est reçu. La fenêtre courante et le menu courant ne sont pas changés avant l'appel à la fonction de rappel. Les applications utilisant plusieurs fenêtres ou menus doivent explicitement établir fenêtre courante et le menu courant, et ne pas se fier à l'état courant.
On doit éviter les calculs dans une fonction de rappel pour le repos afin de minimiser les effets sur le temps de réponse interactif.
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 13 juil. 2005 à 09:37
G deja essayé tel kel, mais ca ne marche pas. Alors, une question : les
fonctions de gestion du clavier et de la souris sont-elles paramétrées
pour fonctionner en interruptions ou en scrutation ?
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 13 juil. 2005 à 18:09
Salut j'ai pas tout saisi....
Tu veux executer une fontion avant le tout premier appel a la fonction de keyboard ? :
-> place ton code avant de faire l'appel a glutKeyboardFunc(...) dans le main.
Tu veux executer une fontion a chaque appel de la fonction de keyboard ? :
->place ton code a l'entree de la fonction keyboard(..)
Si aucun de ces cas, explique plus en detail...
KeniiyK
Vous n’avez pas trouvé la réponse que vous recherchez ?
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 13 juil. 2005 à 18:29
Si tu veux, je veux en fait placer ma fonction dans la boucle principal
du prog, mais juste avant l'appel éventuel de la fonction keyboard, de
manière a ce que la fonction s'execute meme quand keyboard ne s'execute
pas, mais kelle s'execute chronologiquement juste avant keyboard quand
celle-ci doit s'effectuer. En gros g un tableau de valeurs. Chaque case
doit etre mise à -0.5 quand on frappe la touche en question (genre case
0 pour 'A', case 1 pour 'B' ....), mais chaque case ne doit rester à
-0.5 que le temps ou la touche est pressée !
G pensé à foutre ma reinit du tableau dans l'idle, avec une condition
sur une variable que je fout à 1 au début du keyb et à 0 à la fin, mais
je voudrais savoir si ya pas plus simple ? Pour ca il faut surtout que
la fonction keyboard soit appelée par scrutation et non ninterruption.
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 13 juil. 2005 à 22:46
Je sais pas si j'ai tou saisi (desole g du mal ce soir....) mais sinon appelles ta func dans l'idleFunc et au debut de keyboardFunc.... c pa ca ? bon.... explique chronologiquement les appels de function que tu voudrais avoir...
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 14 juil. 2005 à 11:30
OK. Voila mon problème, avec du code ca passera peut etre mieux.
Cette fonction est celle pointée par glutkeyboardfunc :
void Touches(unsigned char key, int x, int y)
{if(key==27)exit(0);
if(key>='a' && key<='z')
positions_y[key-'a']=-0.5;
if(key==' ')
positions_y[26]=-0.5;
old_key=key;
}
Comme tu le vois, a chaque fois qu'on frappe une lettre ou espace, une
variable (qui était à 0) s'affecte à -0.5 . Mois je
voudrais que cette affectation ne dure que pendant le temps ou la
touche en question est enfoncée.
CAD : tu appuie sur 'A', ca affecte poisitions_y[0] à -0.5, et
l'affectation dure, c'est à dire la variable n'as pas de nouvelle
affectation. Quand tu relache la touche donc ici 'A' (quand je dis 'A',
c 'a' en fait mais pas d'importance) la variable est réaffectée à 0.
Pour ce faire j'aurais voulue si tu veux un schéma de ce type là :
position_y[old_key-'a']=0; //Réalloue automatiquement l'ancienne touche à 0
=>appel éventuel de la fonction touche (cad si elle doit etre appelée car une touche a été frappée)
=>A pour effet de mettre la bonne variable à -0.5
Mais je ne ais pas ou placer l'instruction qui est censée venir se loger juste avant Touche()
J'espère que cette fois j'ai expliqué correctement mon problème. LOL et merci pour ta patience !
<hr size="2" width="100%"> Qui ne tente rien...
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 14 juil. 2005 à 12:06
Ok je vois now... c'était rude !!!!, le probleme c'est que GLUT n'est pas multi-threadé donc tant que tu appuies sur une touche GLUT sera dans la keyboardFunc et pas dans une autre.... donc meme si tu arrive a resoudre tes affectations, quand tu sera dans une autre func cela voudra dire que tu as relache la touche et donc 0 dans ta variable....
Il vaudrai mieux que tu fasses position_y[key-'a']=-(position_y[key-'a']+0.5); ainsi chaque appui d'une touche change l'affectation sans rester appuyé...
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 14 juil. 2005 à 13:38
Par contre, comment se fait-il que la fonction keyboard semble avoir un
raté au départ ? Je m'explique : elle prend bien le premier appui, puis
si tu laise appuyé elle pause un peu genre 1/4 de seconde avant de
repartir et la elle enchaine sans interruption. Pkoi la pause ?
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 14 juil. 2005 à 13:46
Je croi que c'est fait expres.... ouvre un document texte et reste appuyé sur une touche tu aura le meme effet. Car au sinon le temps que tu lache la touche en pensant n'y appuyer qu'une seule fois l'ordi aurai le temps d'en enregistrer 10000....
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 14 juil. 2005 à 17:52
Ben voui mais c'est GLUT..... c'est de base... apres si tu veux faire un truc qui envoie un minimum tu fais pas avec GLUT...., tu prends Qt par exemple.. (c tro bien)...
KeniiiyK
PS : sui sur que Doom a pas ete code avec GLUT ....
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 14 juil. 2005 à 20:01
et Qt n'a pas ce pb ? Paske sous TurboC (LOL je sais c vieux), sous DOS
et sans OpenGL, je l'avais deja ce probleme ! donc je me demande s'il
ne vien pas a la base du langage C...
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 14 juil. 2005 à 23:00
bon, en tout cas pour le 1° pb c a dire le sujet du message, g trouvé
la solution. Le seul pb restant étant que j'utilise un compteur. Je
n'aime pas ca car le compteur dépend de la fréquence du PC. Donc, sous
GLUT n'y aurait-il pas par hasard une manière d'obtenir la fréquence,
ou alors simplement le nombre d'opérations par seconde ou par
milliseconde ? Je sais que de telles infos sont directement dispo sous
DOS, mais sos GLUT ?
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 15 juil. 2005 à 10:20
Content que ca marche, pour Qt, surement qu'il y une tempo aussi pour l'appui repeter mais bon je l'utilise surtout pour l'IHM et par ce qu'elle integre "directment" OpenGL.