2011-12-13 5 views
3

1秒に数回更新され、OpenGLを使用して描画される複数(16-32)のプロットで構成されるアプリケーションを作成しています。これまでは、GLUTを使ったプロットの試作の大部分を終了しました。しかし、私はQTのようなフルフェッジフレームワークを採用したいと思います。私はテストQGLWidgetを書く準備をしています。C++で単一のOpenGLコンテキストを持つ複数のQGLWidgets

私が始めてみる前に、複数のQGLWidgetsが単一のOpenGLコンテキストを共有できるかどうかを知りたいですか?もしそうなら、私はウィジェット間でOpenGLのコンテキストを共有するときに追跡する必要がある詳細は何ですか?

答えて

1

はい、this constructorを使用してOpenGLコンテキストを共有することは可能です。

私はウィジェット間で のOpenGLコンテキストを共有するときに何かを把握する必要があります。

わかりませんが、私は世話をする必要がある特別なものはないと思います。

3

もし複数のQGLWidgetsが単一のOpenGLコンテキストを共有できるのであれば?

それは問題ではプラットフォームに依存しているため、今これは、一般的にお答えすることはできません:X11/GLX上では、複数のドローアブルに間接的なコンテキストを使用することが実際に可能である、しかしコンテキストが唯一でアクティブにすることができます一度に1つのドロアブル。

しかし:

これは、複数のコンテキストがそのデータを共有するために持っている(と、それは、これを行うために推奨される方法です)も可能です。 OpenGLの最初のバージョンでは、これは表示リストだけだったので、これはまだリスト共有と呼ばれていました。 OpenGLの現在のバージョンでは、これにはテクスチャ、ピクセルバッファオブジェクト、頂点バッファオブジェクトも含まれています。ただし、フレームバッファオブジェクトは共有することはできませんが、テクスチャはFBO添付ファイルとして使用することはできません。

QGLWidgetは、QGLWidgestsのコンテキスト間でコンテクストデータを共有するためのstigtforward APIを提供します。

+0

個々のプロットは非常に簡単です。それらは散布図の集まりであり、共有する必要のあるデータはありません(PBO、VBO、FBO)。 OpenGLコンテキストごとに多くのリソースが割り当てられ、コンテキスト間の切り替えにはかなりのコストがかかります。この場合、すべてのウィジェット間で共有される単一のコンテキストを持つことが望ましいですか? – slayton

+0

@slayton:コンテキストの切り替えにかかる費用は、リソースの変更によるものです。 1つのリソースが常に変更されます:ウィンドウ。しかし、コンテキストのデータが共有されていれば、それほど悪くはありません。また、イメージがアニメーションで生成されるリアルタイムレンダリングアプリケーションでは、コンテキスト切り替えの経費が問題になることも理解しておく必要があります。あなたの場合、あなたはかなり単純なプロットを持っていて、おそらく交換されるテクスチャはありません。 – datenwolf

+0

個々のQGLWidgetsがすべて同じウィンドウに含まれている場合、そのリソースは各コンテキストスイッチで変更されますか? OpenGLには、osによって描画されるウィンドウと同じではないウィンドウリソースがありますか?または、各コンテキストに同じリソースへのリンクがありますか? – slayton

関連する問題