CAD のようなアプリ (Qt ベース) を作成しています。これは複数のドキュメント インターフェイスであり、各ドキュメントには約 5 つのビューポート (QGLWidget から派生) が含まれます。そのため、フラット シェーダーをアプリケーション全体で共有し、3D アセット (VBO として保存されたモデル) を各ドキュメント、つまり 5 つのビューポートで共有する必要があります。
シェーダー プログラムと VBO Gluint アドレスを共有している限り、すべてが自動的に機能すると思いましたが、そうではありません。各ビューポート/コンテキストには、グラフィックス カード上に独自のアドレス空間があるためだと思います。詳しい方がいらっしゃいましたら、お知らせください。
アプリケーションの起動時にシェーダーをコンパイルしたいのですが、事前に OpenGL を有効な状態にするために有効な QGLWidget が必要なため、これは困難です。しかし、QGLWidgets を (コンストラクターを介して) 共有してリソースを共有する必要があるため、他のものをインスタンス化する前に、1 つを作成して表示する必要があります。しかし、一度に複数のビューをユーザーに表示する必要があるため、これは非常に非現実的です。
画期的なことではないので、これは私が考えているよりも簡単に違いありませんが、私は本当に苦労しています - 誰かが私を正しい方向に向けることができますか?
ありがとう、カム