-2

openGL、GLUT、GLUI を使用して衝突 (円) をシミュレートするプログラムがあります。すべてうまくいきましたが、コードを少し変更すると、奇妙なことが起こり始めました。

「再生」と「ステップ」の 2 つのボタンがあります。「再生」はタイマーで更新される衝突をシミュレートし、「ステップ」もシミュレートしますが、さらに先に進むにはクリックする必要があります。

元々はそうでしたが、現在は「再生」ボタンが「ステップ」と同じように機能します。タイマーコールバックにprintfを追加すると、すべて完全に機能します...

私に何ができる ?

私の timer_cb には、次のものしかありません。

 // printf("something\n");
 glutPostRedisplay();
 glutTimerFunc(getDeltaT(), timer_cb, 0);
4

1 に答える 1

1

printf などの I/O ルーチンを呼び出すと、かなりの遅延が発生します。ある程度正確に答えるために、ユーザー インターフェイスのコードを示してください。

スレッドを使用していますか?ボタンイベントハンドラーの実行が更新ロジックと同期されていないため、同時実行バグである可能性がありますか?

于 2012-05-09T19:33:50.993 に答える