Domanda

Ho un'implementazione standard di glut. La funzione di visualizzazione ridisegna ogni oggetto, ma ho bisogno di un aggiornamento costante su determinati valori di ciascun oggetto. Così com'è, l'unico modo in cui posso pensare di farlo è generare un thread per gestire l'aggiornamento. Tuttavia, non posso usare glutPostRedisplay () da un thread diverso per ottenere glut per aggiornare la finestra. Qual è un buon modo per avere un loop per aggiornare i valori insieme al glut loop?

Inoltre, qual è il modo migliore di dormire per frazioni di secondi (anziché dormire () per interi secondi).

È stato utile?

Soluzione

Se hai bisogno di una sorta di aggiornamento regolare, probabilmente vuoi impostare un glutIdleFunc . Questa è una funzione che verrà chiamata in un ciclo ogni volta che non ci sono eventi da elaborare. Se invece desideri chiamare qualcosa a intervalli regolari (anziché il più velocemente possibile), potresti provare glutTimerFunc che ti consente di pianificare l'esecuzione del ciclo GLUT un certo numero di millisecondi in futuro.

Per quanto riguarda la tua seconda domanda, se hai bisogno di dormire per frazioni di secondo, potresti provare usleep per i periodi di sonno con risoluzione in microsecondi o nanosleep per specificare i periodi di sonno in nanosecondi (anche se in realtà non otterrai una risoluzione di nanosecondi). Non so quale piattaforma tu sia o se questi sono disponibili su Windows, ma dovrebbero essere disponibili su qualsiasi sistema compatibile POSIX (Linux, BSD, Mac OS X). Ma forse per i tuoi scopi glutTimerFunc funzionerà meglio.

modifica da aggiungere : sembra che su Windows sia necessario utilizzare [ Sleep ] ( http://msdn.microsoft.com/en-us/library/ms686298 (VS.85% 29.aspx) (nota la S maiuscola), che richiede un tempo in millisecondi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top