2017-04-26 23 views
0

次のような状況は、スレッドセーフであれば、私はSDL2とOpenGL 3.3を使用して、と思ったんだけど:個々のOpenGLコンテキストへの複数のスレッドのレンダリングは安全ですか?

ケース1

  1. は、複数のスレッドがあり、それらのそれぞれは、コンテキストとSDLのウィンドウを持っています。
  2. これらのスレッドは、ジオメトリをマルチスレッド化します。

ケース2

  1. は、複数のスレッドがあり、それらのそれぞれは、SDLのウィンドウを持っています。しかし、共有されるコンテキストは1つだけです。
  2. これらのスレッドは、ジオメトリをマルチスレッド化します。

スレッドは 'SDL_GL_MakeCurrent'を呼び出して現在のコンテキストを変更するので、後者の場合は安全ではないと思いますが、わかりません。

+1

はい、そうです – zoly01

答えて

0

私はばかだった。

私は書類を読み、それを見つけた:

SDL_GL_GetCurrentContext:現在アクティブなOpenGLコンテキストを取得するには、この機能を使用してください。 SDL_GLContext SDL_GL_GetCurrentContext(無効)

そして不可能である複数のコンテキストでレンダリングする「SDL_GL_MakeCurrent」を呼び出すことなく、意味アクティブに一つだけのOpenGLコンテキストが、そこだと実感しました。すなわち、第1の場合は第2の場合とほとんど異なる。

スレッドセーフではないと私は結論づけました。私の愚かさには申し訳ありません。

関連する問題