OpenGL ES

トップ > レビュー > OpenGL ES

OpenGL ES概論(のつもり)

OpenGL for Embedded Systems(OpenGL ES)は、モバイルハードウェアで簡単に習得と実装が出来るように余分な機能を削ったOpenGLの簡易版です。C言語ベースのAPIであるため、移植性に優れ、幅広くサポートされ、勿論、Objective-CのCocoa Touchアプリケーションにも統合可能です。

iOSの描画機能の基本であるCore AnimationもOpenGL ESを含んでいます。OpenGL ESアプリケーションを開発する際には、Core Animationの特別なレイヤ(CAEAGLLayer)にOpenGL ESのコンテンツが描画されます。Core Animationがこれらの描画結果と他のレイヤを組み合わせて最終的な画面を構築します。

システムフレームバッファとフレームバッファオブジェクトの2種類のフレームバッファが存在します。システムフレームバッファはOSから提供され、スクリーンやウィンドウ環境に接続します。フレームバッファオブジェクトはスクリーンに接続しない(オフスクリーン)環境を対象にします。iOSでは後者のみを使用します。iOSはOpenGL ESのAPIを拡張し、Core Animationとフレームバッファオブジェクトを共有可能にします。

- C言語ベースのAPIです。 - Core Animationに組み込まれて動作します。 - 描画対象は常にFramebufferです。

以下、OpenGL ESで利用される主なクラス(のほんの一部)の説明です。

GLKViewController

通常のViewControllerの機能に加え、OpenGL ESのレンダリングループを実装しています。ビューの中にアニメーションをレンダリングするためのGLKViewを持っています。

GLKView

OpenGL ESを用いたビューを実装するための基本的な機能を提供します。フレームバッファを直接管理するので、アプリケーション側では、描画内容に更新があるときにフレームバッファに描画をすることだけを意識すれば済みます。

EAGLContext

OpenGL ESを使った描画に必要な状態、コマンド、リソースを管理します。全てのOpenGL ESコマンドはこのコンテキストに関連付いて実行されます。

テクスチャやレンダリングバッファといった描画リソースはコンテキストに関連づいたEAGKSharegroupオブジェクトによって管理されます。コンテキストが初期化されるとき、新しいEAGLSharegroupオブジェクトを作るか、以前のコンテキストから引き継ぐかを選ぶことができます。

コンテキストに描画するために、完全なフレームバッファオブジェクトが最初に必要です。レンダリングコンテキストの設定に関する追加の情報は、「OpenGL ES Programming Guide for iOS」を参照して下さい。

GLKBaseEffect

光源、テクスチャ、素材、陰などOpenGL ES 1.1で提供される様々な疑似的な振る舞いをするシェーダを提供します。

その他、よく出てくる略語

EAGL = Embedded Apple's OpenGL
CAEGL = Core Animation Embedded Apple's openGL

参考リンク