Question

J'ai une implémentation standard de Glut. La fonction d'affichage redessine chaque objet, mais j'ai besoin d'une mise à jour constante pour certaines valeurs de chaque objet. En l'état actuel des choses, la seule façon pour moi de 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 autre thread pour obtenir une surabondance d'actualisation de la fenêtre. Quel est le bon moyen d’avoir une boucle pour mettre à jour les valeurs parallèlement à la boucle glut?

En outre, quel est le meilleur moyen de dormir pendant des fractions de secondes (au lieu de dormir () pendant des secondes entières).

Était-ce utile?

La solution

Si vous avez besoin d'une mise à jour régulière, vous souhaiterez probablement définir un glutIdleFunc . C'est une fonction qui sera appelée en boucle chaque fois qu'aucun événement ne sera traité. Si vous préférez appeler quelque chose à intervalles réguliers (et non aussi rapidement que possible), essayez d’essayer glutTimerFunc qui vous permet de planifier l'exécution d'un élément par la boucle GLUT pendant un certain nombre de millisecondes à l'avenir.

En ce qui concerne votre deuxième question, si vous devez dormir pendant des fractions de secondes, essayez utilisez pour les périodes de veille avec une résolution de l'ordre de la microseconde, ou nanosleep pour spécifier les périodes de sommeil en nanosecondes (bien que vous n'ayez pas réellement une résolution en nanosecondes). Je ne sais pas sur quelle plate-forme vous êtes ou si elles sont disponibles sous Windows, mais elles devraient l'être sur tout système compatible POSIX (Linux, BSD, Mac OS X). Mais peut-être que pour vos besoins glutTimerFunc fonctionnera mieux.

modifier pour ajouter : il semblerait que sous Windows, vous devez utiliser [ Veille ] ( http://msdn.microsoft.com/en-us/library/ms686298 (VS.85% 29.aspx) (notez le S majuscule), ce qui prend un temps en millisecondes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top