2010-12-31 5 views
4

OpenGLドライバは通常、[マルチ]スレッドを許容しないことが知られています。 しかし、 がGLコンテキストを作成したメインスレッド(SDLなど)に対処する必要がありますか?もしスレッドが1つのスレッドを生成し、それ以降は からディスパッチOpenGLコマンドは安全ですか?または、 がGL コンテキストを起動したメインスレッドに限定されていますか?OpenGLとスレッド

+0

私はOpenGLがスレッドを区別し、コンテキストを作成したものだけを選択することはできませんが、今日のクレイジーHW加速ドライバでは分かりますか?編集:Err、明らかに以下に答えようとしている人。 – aib

+0

@aib:実際にどのように動作するかはかなり簡単に分かります。コンテキストは、通常、スレッドローカルストレージに格納されます。 – Bahbar

答えて

6

OpenGLコンテキストを現在のスレッドで使用する必要があります。コンテキストは、一度に1つのスレッドでのみ最新のものにすることができます。だからコンテキストを作成し、別のスレッドからそれを使用して、それを最新のものにしても問題ありません。

OpenGLを使用する複数のスレッドでは、スレッドごとに1つずつ、複数のOpenGLコンテキストが必要です。また、OpenGLコンテキスト間でリソースを共有することもできます。

+0

今SDLがそうすることができるのだろうかと思います。 [当分の間、問題のスレッドによってGLコンテキストが開始されていた] [それ以外の場合は、驚くことではない] –

関連する問題