NSOpenGLContext を作成し、レンダリング エンジンを初期化してから、最初のコンテキストの共有パラメーターを使用して新しい NSOpenGLContexts を作成しようとしています。これは機能しません。先に進む前に、コンテキスト間で共有されるのは正確には何ですか? ドキュメントはこれに少し光を当てています:
共有コンテキストは、共有が開始される前後に作成されたすべてのテクスチャ オブジェクト、ディスプレイ リスト、頂点プログラム、フラグメント プログラム、およびバッファ オブジェクトを共有します。オブジェクトの状態も共有されますが、現在の色、テクスチャ座標設定、マトリックスと照明の設定、ラスタライズ状態、テクスチャ環境設定などの他のコンテキスト状態は共有されません。
最初の NSOpenGLContext を作成するとき、次の種類の呼び出しを行うレンダリング エンジンを初期化します。
- glGenTextures、glActiveTexture、glBindTexture
- glEnable
- glUseProgram、glGetAttribLocation、glGetUniformLocation
- glUniform1i、glUniform3f
- glGenVertexArraysAPPLE、glBindVertexArrayAPPLE、glBindBuffer
- glVertexAttribPointer、glEnableVertexAttribArray
それらのほとんどは、頂点およびシェーダー プログラムの作成、プログラム内の attrib および均一な場所への参照の保存、頂点配列の作成、およびいくつかのテクスチャのバインドという 3 種類のタスク用です。
これらすべてのアイテムがコンテキスト間で共有されると思いますか?