質問

標準的な大食い実装があります。表示機能は各オブジェクトを再描画しますが、各オブジェクトの特定の値を常に更新する必要があります。現状では、これを行う唯一の方法は、更新を処理するスレッドを生成することです。ただし、別のスレッドのglutPostRedisplay()を使用して、ウィンドウを更新するためにglutを取得することはできません。過剰なループと一緒に値を更新するループを作成する良い方法は何ですか?

また、秒単位でスリープするのに最適な方法は何ですか(秒単位のsleep()ではなく)。

役に立ちましたか?

解決

何らかの定期的な更新が必要な場合は、 glutIdleFunc 。これは、処理されるイベントがない場合にループで呼び出される関数です。代わりに、(できるだけ速くではなく)定期的に何かを呼び出したい場合は、 glutTimerFunc を使用すると、GLUTループで実行する何かを数ミリ秒後にスケジュールできます。

2番目の質問については、数秒の間スリープする必要がある場合は、 usleep マイクロ秒の解像度のスリープ期間、または nanosleep を使用して、ナノ秒単位でスリープ期間を指定します(実際にはナノ秒の解像度は得られません)。どのプラットフォームを使用しているか、またはWindowsで使用できるかどうかはわかりませんが、POSIX互換システム(Linux、BSD、Mac OS X)で使用できるはずです。しかし、おそらくあなたの目的のために glutTimerFunc がより良く動作します。

追加する編集:Windowsでは[ Sleep ]( http://msdn.microsoft.com/en-us/library/ms686298(VS.85%29.aspx) (大文字の S に注意)、ミリ秒単位の時間がかかります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top