最近、複数のコンテキストで頂点配列オブジェクトとフレーム バッファ オブジェクトを共有する際の問題を回避する方法について質問したところ、複数のコンテキストを使用すると解決策よりも頭痛の種が増えるだけだと確信しました。
私は Qt を使用していますが、現在、私の設定では、リソースを共有するために目に見える QGLWidget のコンストラクターで使用する非表示の QGLWidget が 1 つあります。これは、コンテキスト間で特定のものを共有できないことを受け入れてうまく機能します。
単一のコンテキストを使用してすべての異なるウィジェットをレンダリングできるソリューションを見つけたいと思います。この質問は、共有したい QGLContext を渡す QGLWidget コンストラクターの使用を指していますが、これは使用していないようです1 つの共通コンテキストを使用する代わりに、1 つの QGLWidget で使用されるコンテキストを設定します。2 番目のウィジェットでそれを使用しようとすると、QGLContext がそれを渡すウィジェットを参照する必要があることを通知する qWarning が呼び出されます。
私のアプリケーションの目標は、異なるシーンをレンダリングしながら同じコンテキストを共有する 2 つの別個の GUI を持つことです。現在、シーンを編集してゲーム エンジンで使用するファイルに保存する「ワールド」エディタと、UDK のマテリアル エディタに似たマテリアルをグラフィカルに編集できる「マテリアル」エディタもあります。 OpenGLを利用したプレビューウィンドウです。
理想的には、エディターの各部分に個別のプログラムを用意するのではなく、タブでナビゲートできる 1 つの統合ゲーム エディターを使用するという現在の設計を維持したいと考えています。
まともな解決策のように見えた唯一のことは、 QGraphicsView を使用して QGLWidget をビューポートとして設定することでしたが、これはまったく機能していないようです。基本的なプリミティブをレンダリングできますが、それ以上のものをレンダリングするとバラバラになります。
複数の OpenGL ウィジェットの問題を扱った経験のある方はいらっしゃいますか?