2015-09-16 20 views
5

MacでCocoaを使用し、PowerVR SDKを使用してMacデスクトップでOpenGL ES 2.0を有効にするQtアプリケーションを開発しています。私はそれが働いて得ることができましたOpenGLでQtのウィジェットを描画する

、すべてが完璧にレンダリングし、問題は、私はそのウィンドウでウィジェットを作成していたときに、OpenGLがその上にレンダリングすること あり、例えば 私はQLabelを作成することだし、それはオーバーレンダリングラベルを見えなくする。

私は、単一のOpenGLフレームをレンダリングした後にQLabelのrepaint()メソッドを呼び出そうとしましたが、それは役に立ちませんでした。

誰もこのような問題に遭遇しましたか?ご意見はありますか?

ありがとうございます!

+0

同じ問題、窓の下でも。 OpenGLはツールバー上でさえも描画しています。 –

+0

_私はそれを稼働させることができました。すべてが完全にレンダリングされました。問題は、そのウィンドウでウィジェットを作成するときです。 "そのウィンドウ"を作成するために何を使用していますか? – LukasT

+0

@LukasT QMainWindowを拡張するクラスです。基本的にはCocoaを包むQtウィンドウです.WindId()が返す値をeglCreateWindowSurfaceに渡します。 –

答えて

1

ウィジェットをOpenGLコンテンツと相互運用するには、QOpenGLWidgetを使用する必要があります。ウィジェットで合成されたオフスクリーンバッファーに描画されます。

また、ラベルをテクスチャにレンダリングし、テクスチャをクワッドに適用する必要があります。

+0

私はそれを行うことができますが、私はPowerVRのOpenGLドライバを使用することに制約を加え、QOpenGLWidgetとの相互運用に失敗しました。代替方法は広すぎます –

+0

@MaxRaskin "代替方法が高すぎます"それはできません。あなたは何が関係していると思いますか? Qtはすべてのウィジェットの構成をソフトウェアで行います。最善のケースでは、ラベルはウィンドウのバッキングストアで不透明な描画を行っています。 'QImage'にレンダリングするとき、同じことをしています - バッキングストアのペイントデバイスは単なる' QImage'です!さらに、テキストまたはスタイルが変更されたときにラベルをレンダリングするだけで済みます。それは低コストです。 –

+0

私は実行時間が高価でパフォーマンスが悪いことを意味しました。それはそれほど複雑ではない方法があるかどうかを意味します。 –

関連する問題