2016-03-27 20 views
0

QT5.6を使用してQT5.6を使用してアプリケーションをQGLWidgetから、QT5.6を使用してQOpenGLWidgetにアップグレードしています。アプリケーションがアップグレードされ、うまく動作します。しかし、私はデバッグツールを保存しようとしています。私の開発環境はVisual Studio 2013です。最終的なアプリケーションではダブルバッファグラフィックスを使用していますが、デバッグのために、デバッガからインタラクティブに呼び出すことができ、フロントバッファに描画し、画面上の出力を見ることができます。これらの関数は、QOpenGLWidgetがフレームバッファーに描画するため、もはや機能しません。さらに、私がglDrawBuffer(GL_FRONT)を呼び出すときに描画しようとする前に、glErrorを1280(無効なenum)に生成します。追加データ - glGetIntegerv(GL_DRAW_BUFFER、& my_val)は、GL_COLOR_ATTACHMENT0である0x8ce0を返し、GL機能を2.0に限定することを目的としていましたが、GL 3.0で意味をなさないでしょう。QOpenGLWidgetでフロントバッファに描画する方法

+0

QOpenGLWidgetは中間FBOに描画するため、OpenGL 3/OpenGL 2 + FBO/OpenGL ES 2が必要で、 'GL_FRONT'描画バッファへのアクセスは提供されません。 *本当に必要な場合は、代わりに 'QOpenGLWindow' +' createWindowContainer'を使います。 – peppe

+0

提案していただきありがとうございます。それはかなりの仕事を伴うように聞こえる。 – LRaiz

+0

@peppeの提案は(ほとんど)うまく動作することが判明しました。私は克服する方法がわからないが、まだキーボードの焦点の問題があります。 http://stackoverflow.com/questions/37196155/how-to-direct-keyboard-input-qopenglwindow-in-5-6 – LRaiz

答えて

0

解決策のクレジットは@peppeです。彼の提案は実装が難しくないことが判明し、私が望むものを達成することができました。 QOpenGLWidgetからQOpenGLWindowsとそのQWidgetコンテナの組み合わせに切り替えることで、私が望むものを正確に達成することができました。

QOpenGLWindowから自分のクラスを派生させ、QWidget :: createWindowContainer(my_class_pointer)を介して取得したQWidgetへのポインタを覚えていました。そして、私がQOpenGLWidgetに存在しないQGLWidgetメソッドを利用するたびに、これらの呼び出しをコンテナにリダイレクトしました。

QOpenGLWindowは、私のデバッグツールをフロントバッファに直接描画していると完全に満足しているようです。

関連する問題