1. ホーム
  2. opengl

[解決済み] glutDisplayFuncとglutPostRedisplayの関係性を理解する。

2022-02-19 12:43:48

質問

赤本を読んでいると、こんなことが書いてありました。

glutDisplayFunc(void (*func)(void))です。 最初の、そして最も重要なイベント コールバック関数を見ることができます。 GLUTが ウィンドウのコンテンツが必要です。 再表示されると、コールバック関数 glutDisplayFunc()で登録される。 が実行されます。そのため 再描画に必要なすべてのルーチン シーンを表示するコールバック 関数を使用します。

プログラムが内容を変更した場合 を使用しなければならない場合があります。 を呼び出す必要があります。 を呼び出すようにglutMainLoop()に働きかけています。 登録された表示コールバックは 次の機会

glutPostRedisplay()が呼び出されるのはどのような場合ですか?このパラグラフからは、なぜその機能が必要なのか理解できません。

解決するには?

glutDisplayFuncは、ウィンドウを再描画する必要があるときはいつでも呼び出されます。これは,glutPostRedisplay :) を呼び出す時を含む.

ウィンドウを再描画する必要があるのは、どのような場合ですか?

  • サイズが変わったとき
  • 可視化されたとき
  • 一部が見えるようになったとき
  • 移動させたとき
  • その他

しかし、表示関数が、マウスの位置によって決まるx;yの位置に三角形を描くとしたらどうでしょう。この場合、マウスが移動するたびにシステムにウィンドウを再描画するように要求しなければなりませんね?そのため、MouseFunc()からglutPostRedisplayを呼び出すことになります。実際、glutPostRedisplayを呼び出すと、再描画イベントは、マウスのクリックなどの他のウィンドウイベントと一緒にキューに入れられます。本質的に、あなたのmainLoopが行うことは、そのキューからイベントをピックアップし、それらのハンドラを呼び出すことです。