Pregunta

Tengo una implementación estándar de saturación. La función de visualización redibuja cada objeto, pero necesito una actualización constante de ciertos valores de cada objeto. Tal como está, la única forma en que puedo pensar hacer esto es generar un hilo para manejar la actualización. Sin embargo, no puedo usar glutPostRedisplay () de un hilo diferente para obtener glut para actualizar la ventana. ¿Cuál es una buena manera de tener un bucle para actualizar valores junto con el bucle de saturación?

Además, ¿cuál es la mejor manera de dormir durante fracciones de segundos (en lugar de dormir () durante segundos completos)?

¿Fue útil?

Solución

Si necesita algún tipo de actualización regular, probablemente desee configurar un glutIdleFunc . Esta es una función que se activará en un bucle siempre que no haya eventos que se procesen. Si, en cambio, desea llamar a algo a intervalos regulares (a diferencia de lo más rápido posible), puede intentar glutTimerFunc que le permite programar algo para que se ejecute en el bucle de GLUT un cierto número de milisegundos en el futuro.

En cuanto a su segunda pregunta, si necesita dormir por fracciones de segundos, puede intentar usleep para períodos de espera de resolución de microsegundos, o nanosleep para especificar los períodos de sueño en nanosegundos (aunque en realidad no obtendrás una resolución de nanosegundos). No sé en qué plataforma está o si están disponibles en Windows, pero deberían estar disponibles en cualquier sistema compatible con POSIX (Linux, BSD, Mac OS X). Pero quizás para sus propósitos glutTimerFunc funcionará mejor.

editar para agregar : parece que en Windows necesitarías usar [ Sleep ] ( http://msdn.microsoft.com/en-us/library/ms686298 (VS.85% 29.aspx) (tenga en cuenta el S mayúscula), que lleva un tiempo en milisegundos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top