メインループを実行しています。が呼び出されるgtk_main()
まで実行されます。gtk_quit()
GTK.orgのgtk_main()
gtk_main_quit()
が呼び出されるまでメインループを実行します。gtk_main()への呼び出しをネストできます。その場合、gtk_main_quit()は、メインループの最も内側の呼び出しを返します。
また、glutMainLoop()
同じように機能し、GLイベントを永久に処理します。
OpenGL.orgのglutMainLoop()
glutMainLoop()
GLUTイベント処理ループに入ります。このルーチンは、GLUTプログラムで最大1回呼び出す必要があります。一度呼び出されると、このルーチンは決して戻りません。登録されているコールバックを必要に応じて呼び出します。
したがって、これらの両方を同時に実行することは望ましくありません(互いに干渉する可能性があるため、予期しない結果が生じる可能性があります)。その後、過剰な状態から呼び出す必要がありますgtk_main_iteration()
。
GTK.orgのgtk_main_iteration()
メインループの単一の反復を実行します。処理を待機しているイベントがない場合、GTK+は次のイベントが通知されるまでブロックします。ブロックしたくない場合は、gtk_main_iteration_do()を確認するか、最初にgtk_events_pending()で保留中のイベントがあるかどうかを確認してください。
さて..GLUTには同等のものがないgtk_main_iteration()
ので、GLUTコールバックを登録する必要があります。
すべてのフレームに対してコールバックを実行するgtk_main_iteration()
を使用し て実行されるGLUTにコールバックを登録できます--glutIdleFunc() ..glutIdleFunc(void (*func)(void))
または、コールバックを指定して、200ミリ秒ごとglutTimerFunc(unsigned int msecs,
void (*func)(int value), value)
の戻り値を呼び出して確認することもできます。gtk_main_iteration()
私はおそらく両方を試してみますが、glutIdleFunc()
応答性を高めるために定期的に呼び出されるとは限りません。
ただし、 GTKのGLサポートを推進することは本当に検討する価値があります。