2012-03-05 16 views
2

iPhoneでOpenGL ES 2.0を理解しようとしてきましたが、これをいくつかの方法で動作させることができました。しかし、私が本当によく理解できないものがあります。 OpenGLのコンテキストとは何ですか?それは何のためですか?iphoneのOpenGLコンテキスト。それは何ですか/それはどのように機能しますか?

私はopenglが作成することなく動作することを知っています。しかし、誰かが私にそれが正確であることを教えてほしい。

OpenGLの場合は、EAGLコンテキストが現在のものであることを確認する必要があります。私は他人を作る必要がないので、それが現在のものであることを確認することには一度も注意を払っていません。

また、1つだけ作成して回しますか?

私はそれを破壊しなければならない私はOpenGLの使用をやめるつもりですか?

オブジェクト(glkviewなど)からコンテキストポインタを作成したEAGLコンテキストにするにはどうすればよいですか?オブジェクト固有のものですか?

私はそれが非常に奇妙な質問かもしれないことは知っていますが、私はGoogleやここで答えを探してみましたが、私は簡潔な答えを見つけることができませんでした。

おかげ

答えて

1

アンOpenGLコンテキストは、OpenGLのインスタンスの全体の状態をカプセル化します。したがって、コンテキストを作成する方法はOpenGLを初期化する方法であり、システムが後でテクスチャ、フレームバッファなどを引用する名前を理解できるようにするためにはコンテキストを設定する必要があります。したがって、複数のコンテキストを明示的に使用することは、すべてを暗黙的にグローバルにするのではなく、OpenGLの状態です。

OpenGLは非常にモーダルなAPIなので、スレッド化には安全ではありません。ただし、コンテキストは単一のスレッドにのみ関連付けられ、iOSでは同じ名前のリソースを使用できるコンテキストの集合であるシェアグループが許可されます(手動のマイナーな同期が必要です)。これまでのところ、複数のコンテキストの最も一般的な使用方法は、バックグラウンドでメインスレッド上のユーザーエクスペリエンスを中断することなく高価なリソース(大規模なテクスチャをロードするなど)を用意することです。

リソースがシステムに返されるようにするには、コンテキストを終了する必要があります。 GLKViewはinitでコンテキストを取得し、contextプロパティで取得して設定するために現在のコンテキストを公開します。

関連する問題