Mettre en pause l'exécution d'un algorithme

Résolu
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 20 juin 2006 à 14:54
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 21 juin 2006 à 09:52
Bonjour,

J'utilise dans mon programme, pour l'affichage graphique gluttimerfunc (déclenche un rafraichissement de l'image toutes les 30 millisecondes).
L'image contient notamment un pavé tournant, je ne peux donc pas arrêter le rafraichissement de l'image

Parallement, j'utilise du picking en opengl, et donc, quand je clique sur un objet de ma scène, deux algorithmes se déclenchent l'un après l'autre. J'aimerais cependant que, entre ces deux algorithmes, il y ait une pose de 1000 millisecondes (une seconde) sans que la brique arrête de tourner

Comment faire ?

Merci d'avance

NC

8 réponses

nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
21 juin 2006 à 09:52
ben le contexte, je vous l'ai déjà expliqué plus haut ;)

Cependant, j'ai compris ce que vous me conseillez, je pense pouvoir le faire, mais pour moi ca a un gros inconvenient : dans le programme ca devient un peu bazar après parce que on retourne toujours avec la fonction appelée par le gluttimerfunc, on casse des fonctions pour y aller ... Existerait-il une autre solution ?
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 juin 2006 à 15:03
Je comprend pas et je vois pas l'intérêt de vouloir attendre :) expliques d'avantage plz
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
20 juin 2006 à 15:29
ben en fait, le premier algorithme génère quelques variables qui vont coder pour des effets graphiques (un autre objet de la scène tourne si on clique dessus). J'aimerais que cette rotation soit terminée (donc au bout d'environ 0.8 secondes -> on arrondit à 1) avant de déclencher le second algorithme

Voila ++
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 juin 2006 à 16:11
Bas simplement avant de démarrer le second algo, tu attends que la
rotation soit finis. Genre un bool qui dit que le deuxième algo doit
démarrer a la fin de la rotation. Tu testes des que la rotation est
terminer, tu éxécutes le second algo.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
20 juin 2006 à 18:20
Oué mais dans ce cas là il y a un os :

on reprend :

clic->picking->algorithme1->rotation1
parallèlement gluttimerfunc
bon, la question est : comment attendre, car si je fais comme vous dites, et que j'utilise un bool : on a, tant que rotation1 n'est pas terminée un while qui bouffe tout le processeur et qui empèche le gluttimerfunc de tourner

Je ne vois donc pas trop comment vous voulez que je fasse :(
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 juin 2006 à 19:27
Mais avec ce bool, tu n'as plus besoin de timer. Apres chaque affichage
de l'image, tu regardes si tu as fini la rotation et si l'algo2 doit
etre exécuté, auquel cas, tu l'appelles.
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
20 juin 2006 à 20:57
donc ce que vous préconisez et que je mette le "déclencheur" dans la fonction appelé par gluttimerfunc ?

Et que dans ce cas là; je fasse un test du genre : SI non finis à l'affichage précédent AND finit maintenant THEN on lance algo 2 ?
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 juin 2006 à 22:15
Ce que je ferais: Un bool B1 pour dire "l'algo doit etre lancé" puis un autre B2 pour savoir si "la rotation est en cours".

Et donc if B1 and not B2 alors B1 = false puis sque tu veux.


Enfin j'ai du mal a percevoir la solution puisque je vois pas le contexte de ton programme.
0
Rejoignez-nous