5

QGLWidgets の 3 レイヤー階層を使用して、CAD のようなアプリで 5 つの OpenGL ビューポート間でシェーダーと頂点データを共有しています。ルート コンテキストはアプリケーション全体のシェーダーをコンパイルするために使用され、ドキュメントごとのコンテキストはモデルの頂点データを共有するために使用され、ビューポート コンテキストは実際にレンダリングを行うものです (グリッド頂点データやその他のビューポートごとのものも含まれます)。

シェーダーの共有は正常に機能しているようで、グリッドの描画も同様ですが、頂点データの共有に関しては失敗し、正直に言うと、どのように機能するのかわかりません...

モデル コンテキストが最新の状態でアイテムの 3D アイコンを作成しました。これは、'name' が 1 の最初の VAO であったためです。 )が現在であるため、VAO 1が呼び出されますが、描画されるのはビューポートのVAO 1です-私の素敵な赤いグリッドの中心線。OpenGL コンテキストは共有できますが、名前が一意ではないため、各アイテムが属する「名前空間」をどのように指定できますか?

モデル VAO が呼び出される直前にモデル コンテキストを最新のものにしようとしましたが、適切な VAO もビューポートも描画されません。

これは私には非常に基本的なことのように思えるので、何か愚かなことをしているに違いありません - 何か提案はありますか?

4

1 に答える 1

5

OpenGL フォーラムの Alfonse Reinheart のおかげで、VAO がコンテキスト間で共有されていないことが原因であることがわかりました。

于 2011-04-22T13:00:14.033 に答える