【ご注意】本アプリはOpenGL ES自体の解説書ではありません。またゲームエンジンなどを使いOpenGL ESをフル活用している上級開発者向けでもありません。OpenGL ESについてはそれほど詳しくないが「自分のアイデアを実現するために、GLKitやOpenGL ESの能力を開発中のアプリでうまく生かせないか?」と考えられている方に最適な入門書です。何かしらの処理の高速化については幾つかのヒントが見つかるかもしれません。
iOSデバイスでは、GPUの能力をフルに引き出すためにOpenGL ESとGLKitが大活躍しています。本アプリと書籍ではiOSアプリにおけるOpenGL ESとGLKitの活用方法や、iOS 5からGLKitが導入された意味や背景を解説したいと思います。具体的には、OpenGL ESやGLKitを用いた高速な3Dや2D描画、アニメーション、画像処理などについてサンプルソースコードを提示しながら解説いたします。
著者:有限会社オッティモ 小池邦人
書籍はePubドキュメントです。本文については、iPad版 iBooksのテーマが「フルスクリーン」、フォント種類が「ヒラギノ明朝」、フォントサイズが「下から3番目」に合わせてレイアウトされています。その設定に変更してからiPadを縦向きにしてお読みください。Mac版 iBooksで読まれる場合には、表示を「単一ページ」に設定してください。
一度登録してしまえば、本文中に設定されているハイパーリンク経由でアプリの指定したデモを起動することが可能です。アプリを起動するハイパーリンクは先頭に「★」が付いています。その箇所のタップでアプリが起動され、リンク先に記載されているデモ内容が実行されます。アプリからはツールバーの「ビューアへ」ボタンをタップすることでiBooksへ戻ることが出来ます。
サンプルソースコードプロジェクトの開発環境はXcode 5です。ビルドして実機にインストールする場合には、Xcodeのプロジェクトターゲット(TARGETS)のGeneralで表示される「Build Identifier」と、Build Settingsの「Code Signing Identity」を正しく再設定してください。アプリの起動対象はiOS 6.0以上であり、iOS 7.0でも問題なく動作させることができます。
「GLK」… GLKitを用いたデモを示しています。
「ES1」… OpenGL ES 1.1のみを用いたデモを示しています。
「ES2」… OpenGL ES 2.0のみを用いたデモを示しています。
GLK1ViewController ….(A)GLK1 BaseEffect利用
GLK2ViewController ….(B)GLK2 独自シェーダ利用
GLK3ViewController ….(C)GLK3 テクスチャ描画
GLK4ViewController ….(D)GLK4 霧とテクスチャ
GLK5ViewController ….(E)GLK5 キューブマップ
GLK6ViewController ….(F)GLK6 天球と鏡面反射
GLK7ViewController ….(G)GLK7 2面のGLKView
GLK8ViewController ….(H)GLK8 2コントローラ
ES11ViewController ….(I)ES11 テンプレート1.1
ES12ViewController ….(J)ES12 ティポット描画
ES13ViewController ….(K)ES13 テクスチャ画像
ES14ViewController ….(L)ES14 両面テクスチャ
ES15ViewController ….(M)ES15 画像の明度調整
ES21ViewController ….(N)ES21 テンプレート2.0
ES22ViewController ….(O)ES22 バッファオブジェ
ES23ViewController ….(P)ES23 テクスチャ画像
ES24ViewController ….(Q)ES24 合成をして描画
ES25ViewController ….(R)ES25 画像の明度調整
例外として(H)のビューコントローラのみMainStoryboard.storyboardに定義されています(機能がStorybordsでしか使えないため)。上記以外に追加されたクラスの役割は次の通りです。詳細はソースコード内のコメント行を参照してください。
「EAK7View」(G)のデモで使うGLKViewを継承したビュークラス
「EAGLView」OpenGL ES 1.1や2.0で3D描画を行うためのビュークラス
「Offscreen」テクスチャ画像を展開するためにメモリ領域を確保するクラス
「Program」OpenGL ES 2.0でテキストからシェーダプログラムを作成するルーチン
【ご注意】サンプルソースコードの使用権利はフリーです。使えるようであれば、ご自身のソースファイルへコピー&ペースしてご利用ください。ただし、その結果として発生した事象に対しては責任は負いかねますのでご了承ください。