コンテキスト/スレッド間でOpenGL FrameBufferオブジェクトを共有することは可能ですか?
-
10-10-2019 - |
質問
シーンを1つのスレッドでレンダリングしてから、結果を別のスレッドが所有するウィンドウでブリットしたいと思います。 FrameBufferをCPUメモリに戻すことを避けるために、FrameBufferオブジェクトを使用したいと思います。これまでのところ、私はこれを機能させることができませんでした(白いテクスチャ)。これは、これがOpenGLによってサポートされていないと信じています。
- 異なるコンテキスト間でframebufferオブジェクトを共有することは可能ですか?
- オブジェクトが一度に1つのスレッドによってのみバインドされていることを考えると、異なるスレッド間でフレームバッファオブジェクトを共有することは可能ですか?
誰かがこれがドキュメントで説明されている場所を私に指し示すことができれば、それはボーナスになるでしょう。
解決
異なるコンテキスト間でフレームバッファを共有することはできません。付録Dの最初の段落、OpenGL 3.3仕様を参照してください。ただし、テクスチャとRenderBuffersを共有できます。これにより、必要なことが必要です。
スレッドに関しては、可能であるはずですが、複数のスレッドからGLコマンドを発行しないことを一般的にお勧めします(同期するのは非常に難しいためです)。通常、コンテンツをPixel-Buffer-ObjectにコピーしてGLスレッドからマップし、他のスレッドからマッピングされたポインターを使用します。
所属していません StackOverflow