4

私はOpenGLでプログラムを書いていますが、ある種のインターフェースツールバーが必要です。私の最初の反応はGUIを使用することでしたが、C ++をさらに調査すると、GUIは使用しているOSに依存していることがわかりました(私はWindowsを使用しています)。そのため、QTを使用して支援することにしました。

私の質問は、このソリューションに対して最善/適切なアプローチを取っているかどうかです。OpenGLプログラムを作成して、C ++コードとのインターフェイスを作成したいGUIを使用して、実行したいことを実行することもできますか。

たとえば、各方向に矢印が付いた単純な「コントロールパネル」を作成するとします。そして、画面上にglutによって作成されたボックスオブジェクトがあります。クリックする矢印をインターフェイスし、openGLプログラムと対話してボックスを移動できますか?

4

3 に答える 3

7

Qtの使用は、問題に対して一貫性があります。QtOpenGLモジュールを介してOpenGlを適切に統合できます。

  1. 表示クラスをQGLWidget(Qt 4.8まで)またはQOpenGLWidget(Qt 5.4以降)から派生させ、仮想メソッドpaintGL()などを実装します。
  2. Qtの信号およびスロットシステムにアクセスできるため、Guiイベントをキャッチし、OpenGl表示を更新できます。
于 2009-11-09T22:04:59.477 に答える
-1

通常の非OpenGLQtウィジェットを上に使用できるQGLWidgetため、説明する内容は実行可能です。

これを行うときに私が遭遇したことの1つは、通常のウィジェットは不透明でなければならないということでした。彼らが何らかの形で透明になった瞬間、彼らの下にはあらゆる種類のゴミがありました。それは少し前のことなので、おそらく最新バージョンがこの問題に対処しています。プラットフォーム固有である可能性もあるため、YMMV。

于 2009-11-09T22:13:34.250 に答える
-1

GLUTにとどまります。コントロールパネルにQtを追加する必要はありません。サブウィンドウ(またはプログラム設計に適した2番目のウィンドウ)を開き、そのウィンドウにコントロールを描画し、GLUTを使用してマウスの操作を処理することができます。

さらに、QtとGLUTにはそれぞれ独自のイベントループがあります。Qtのイベントループだけを使用するには、GLUT構造の多くを放棄する必要があります。これは、GLUTイベントループがコールバック関数を呼び出すために存在しないためです。Qtには、他の誰かにイベントループでQtのイベント処理コードを呼び出させる機能がありますが、GLUTにイベント情報を渡す簡単な方法はないと思います。

于 2009-11-10T15:37:48.097 に答える