2011-08-13 9 views
1

GL関数の呼び出しに関係なく、EXC_BAD_ACCESSを取得しているようです。しかし、一部のオフスクリーン描画では、NSDocumentサブクラスのreadFromURL:ofType:error:でこれらの関数を呼び出しています。そのコードを削除してGLを後で使用しようとすると、すべてがロードされると、すべて正常に動作します。これはGLコンテキストの問題ですか?CocoaアプリケーションはどのGL関数でもEXC_BAD_ACCESSを返します

私はAppleのGLガイドを読んだのですが、オフスクリーン描画に関するセクションでは、フレームバッファーの使い方を教えてくれました。私はそうしていますが、glGenFramebuffersEXTは他のすべてと同じようにクラッシュするので、あまり役に立ちません。

実行する必要のあるコンテキスト作成がありますか?そうであれば、それを実行する最も良い方法は何ですか?

答えて

3

はい、OpenGL呼び出しにはコンテキストが必要です。あなたはNSOpenGLViewを持っている場合は、そのコンテキストを取得し、それが現在のようにする必要があり:

[[openGLView openGLContext] makeCurrentContext]; 
// glCalls() 

あなたがNSOpenGLViewを使用していない場合は、NSOpenGLContext youselfを作成することができます。

+0

ありがとうございました。コンテキストの束を管理しなければならないと迷惑をかけるようです - すべてのカスタムビューが単一のコンテキストを使用しないようにする理由はありますか?また、この質問を後で見つける人のために、あなた自身の 'NSOpenGLContext'を作成することは次のようになります:' [[NSOpenGLContext alloc] initWithFormat:[NSOpenGLView defaultPixelFormat] shareContext:nil] '。 – andyvn22

+0

あなたのコンテキストは 'shareContext:'パラメータを使ってテクスチャや他のオブジェクトを共有することができるので、コンテキストごとに再度作成する必要はありません。 – hamstergene

+0

私はそのショットを与えましたが、コンテキストごとにシェーダをロードする必要があるように思えましたか? – andyvn22

関連する問題