18

私はOpenGLを使い始めたばかりですが、glutMainLoop()そこで実際に何が起こっているのかを理解するのは簡単ではないようです。関数呼び出しのいずれかが応答するまで、何もせずにそこにとどまりますか?

4

4 に答える 4

23

ディスプレイコールバックを何度も呼び出し、可能な場合は特定のフレームレートを維持できるようにアイドル状態を呼び出し、必要に応じて他のフレームレートを呼び出します(ウィンドウのサイズを変更したり、入力イベントをトリガーしたりする場合など)。

基本的に、この関数内にはメインプログラムループがあり、GLUTがほとんどの作業を実行し、これらのコールバックで特定のプログラムロジックを簡単に設定できるようにします。GLUTを使ってからしばらく経ちましたが、最初は確かに混乱します。

ディスプレイでは、コールバックは明らかに、起こっているはずのことを何でも描画するためのメインロジックである必要があります。アイドルコールバックでは、最後に表示が呼び出されたときから次回までの状態の変化を判断するための非常に軽量な操作を行う必要があります。たとえば、何かをアニメートしている場合、これはその位置または方向を変更する場所になります。

于 2009-12-07T20:00:11.513 に答える
5

StrixVariaが述べたとおりです。

glutMainLoopはGLUTイベント処理ループに入ります。このルーチンは、GLUTプログラムで最大1回呼び出す必要があります。一度呼び出されると、このルーチンは決して戻りません。登録されているコールバックを必要に応じて呼び出します。

ここから撮影

于 2009-12-07T20:04:30.990 に答える
2

opengl と glut を一緒に使用すると、コールバック関数で opengl コマンドを使用する「glut」プログラムを作成することになります。main には glut 関数が含まれています。多くの glut 関数は、コールバック関数を登録する必要があります。これらのコールバック関数には通常、opengl コマンドが含まれています。

あなたの質問に来て、あなたが主にglutプログラムを書いていることが明らかになったら、glutMainLoop関数呼び出しが必要に応じて実際にコールバック関数を実行し、それがopenglコマンドを実行することも取られるべきです。

于 2014-04-17T13:34:33.830 に答える