コンテキスト/スレッド間でOpenGL FrameBufferオブジェクトを共有することは可能ですか?

StackOverflow https://stackoverflow.com/questions/4385655

質問

シーンを1つのスレッドでレンダリングしてから、結果を別のスレッドが所有するウィンドウでブリットしたいと思います。 FrameBufferをCPUメモリに戻すことを避けるために、FrameBufferオブジェクトを使用したいと思います。これまでのところ、私はこれを機能させることができませんでした(白いテクスチャ)。これは、これがOpenGLによってサポートされていないと信じています。

  1. 異なるコンテキスト間でframebufferオブジェクトを共有することは可能ですか?
  2. オブジェクトが一度に1つのスレッドによってのみバインドされていることを考えると、異なるスレッド間でフレームバッファオブジェクトを共有することは可能ですか?

誰かがこれがドキュメントで説明されている場所を私に指し示すことができれば、それはボーナスになるでしょう。

役に立ちましたか?

解決

異なるコンテキスト間でフレームバッファを共有することはできません。付録Dの最初の段落、OpenGL 3.3仕様を参照してください。ただし、テクスチャとRenderBuffersを共有できます。これにより、必要なことが必要です。

スレッドに関しては、可能であるはずですが、複数のスレッドからGLコマンドを発行しないことを一般的にお勧めします(同期するのは非常に難しいためです)。通常、コンテンツをPixel-Buffer-ObjectにコピーしてGLスレッドからマップし、他のスレッドからマッピングされたポインターを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top