2009-10-23 7 views
1

J'ai une implémentation de saturation standard. La fonction d'affichage redessine chaque objet, mais j'ai besoin d'une mise à jour constante sur certaines valeurs de chaque objet. Comme c'est le cas, la seule façon dont je peux penser à faire cela est de générer un thread pour gérer la mise à jour. Cependant, je ne peux pas utiliser glutPostRedisplay() à partir d'un thread différent pour obtenir de la surabondance pour actualiser la fenêtre. Quel est un bon moyen d'avoir une boucle pour mettre à jour les valeurs à côté de la boucle de surabondance?glutPostRedisplay dans un thread différent

Aussi, quelle est la meilleure façon de dormir pendant des fractions de secondes (au lieu de sleep() pendant des secondes entières).

Répondre

2

Si vous avez besoin d'une mise à jour régulière, vous devez probablement définir un glutIdleFunc. C'est une fonction qui sera appelée dans une boucle chaque fois qu'il n'y a aucun événement à traiter. Si vous voulez plutôt appeler quelque chose à intervalles réguliers (par opposition à aussi vite que possible), vous pouvez essayer glutTimerFunc qui vous permet de planifier quelque chose qui sera exécuté par la boucle GLUT un certain nombre de millisecondes dans le futur.

Quant à votre deuxième question, si vous avez besoin de dormir pendant quelques fractions de secondes, vous pouvez essayer usleep pour des périodes de sommeil de résolution de microseconde, ou nanosleep pour indiquer les périodes de sommeil en nanosecondes (bien que vous allez pas vraiment pour obtenir résolution nanoseconde). Je ne sais pas sur quelle plate-forme vous êtes ou si ceux-ci sont disponibles sur Windows, mais ils devraient être disponibles sur n'importe quel système compatible POSIX (Linux, BSD, Mac OS X). Mais peut-être pour vos besoins glutTimerFunc fonctionnera mieux.

modifier pour ajouter: Il semble que sous Windows, vous devez utiliser [Sleep] (http://msdn.microsoft.com/en-us/library/ms686298(VS.85%29.aspx) (note la capitale S), qui prend un temps en millisecondes

+0

Cela semble parfait Vous règle.. –

Questions connexes