0

NSOpenGLView に有効なコンテキストがあることを確認しようとしていますが、openGLContext への呼び出しはこれを理解するのに役立たないようです。openGLContext は常に NsOpenGlContext を返すようです (ビューにコンテキストがある場合は現在のコンテキストを返し、ない場合はコンテキストを作成して返します)。代わりに使用できる別の方法はありますか?

4

1 に答える 1

5

OpenGL コンテキストはスレッドごとに選択されます。NSOpenGLView は、ビューでの描画に使用する必要があるコンテキスト (つまり、[context setView: view] が呼び出されたコンテキスト) を通知しますが、コードを実行しているスレッドで現在選択されているコンテキストは通知しません。古い W​​indows で描画するペン/ブラシを選択するのと少し似ています。

ビューで描画できるかどうかを知りたいことは理解しています。これを行うには、現在のコンテキストが NSOpenGLView が返すものであるかどうかを確認し、そうでない場合はそれを設定します。

スレッドの現在の OpenGL コンテキストを取得するには:

NSOpenGLContext* context = [NSOpenGLContext currentContext];

1 つを現行として設定するには:

[context makeCurrentContext];

現在のコンテキストをクリアするには (つまり、現在のコンテキストを設定しない):

[NSOpenGLContext clearCurrentContext];

一般に、NSOpenGLContext のドキュメントを参照してください。

于 2010-08-02T17:54:23.670 に答える