Pergunta

Eu tenho uma implementação excesso padrão. A função de exibição redesenha cada objeto, mas eu preciso de uma atualização constante em determinados valores de cada objeto. Como é, a única maneira que eu posso pensar de fazer isso é para gerar um segmento para lidar com a atualização. No entanto, eu não posso usar glutPostRedisplay () de um thread diferente para obter excesso para atualizar a janela. O que é uma boa maneira de ter um loop para atualizar valores ao lado do circuito de excesso?

Além disso, qual é a melhor maneira de sono por frações de segundos (em vez de sleep () para integrais segundos).

Foi útil?

Solução

Se você precisar de algum tipo de actualização regular, você provavelmente vai querer definir um glutIdleFunc . Esta é uma função que será chamado em um loop quando não há eventos que entram para ser processado. Se você em vez disso quer chamar algo em intervalos regulares (em oposição ao mais rápido possível), você pode querer tentar glutTimerFunc que permite programar algo para ser executado pelo circuito de GLUT algum número de milissegundos no futuro.

Quanto à sua segunda pergunta, se você precisa dormir por frações de segundos, você pode querer tentar usleep para períodos de sono resolução microssegundo, ou nanosleep para especificar os períodos de sono em nanossegundos (embora você não está realmente indo para obter resolução de nanossegundos). Eu não sei qual plataforma você está em ou se estes estão disponíveis no Windows, mas eles devem estar disponíveis em qualquer sistema compatível com POSIX (Linux, BSD, Mac OS X). Mas talvez para seus propósitos glutTimerFunc vai funcionar melhor.

editar para adicionar : Parece que no Windows, você precisaria usar [Sleep] ( http://msdn.microsoft.com/en-us/library/ms686298 (VS.85% 29.aspx) (note o S de capital), o que leva um tempo em milissegundos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top