Mac OS XのOpenGL contextがマルチスレッド対応になりまっせと発表があって久しいわけですが、
どうマルチスレッド対応してるのかなんとなく不思議ではありました。
使う側の注意としては、コンテキストをロックするべしっていうのが正解みたいです。
とりあえず僕は以下のようにしてます。NSOpenGLViewをサブクラス化したクラスでつかっているメソッドの一部です。
正確なところはサンプルコードやリファレンスあさってください。
間違いがあるようであればこっそり教えて頂けると嬉しいです。
- (void)openGLDraw { CGLContextObj ctx = [[self openGLContext] CGLContextObj]; CGLLockContext(ctx); [[self openGLContext] makeCurrentContext]; // draw something. CGLFlushDrawable(ctx); CGLUnlockContext(ctx); }
glのapiのエントリーポイント的にそりゃそーかって感じですな。