ES1からES2に移行されました。ES2ではシェーダー言語を使った実装が基本となるため、ES1に比べて初心者にとっての敷居が高いのが問題で、それを解決できるかもしれない注目のフレームワークがGLKitだったわけです。5が正式リリースされた現在、GLKitはAPIとして使える状態にはなっているものの、ドキュメントはフレームワークリファレンスのみで、なかなか公式資料が他にでてこないのが困ったところ...。1.0を使うのが主流でした。2.0を使うことが主流となりました。2.0は表現の幅が広くなりハードウェアの性能を最大限活用できる一方で、シェーダー言語等覚える事が多くなってしまったため初心者の敷居が上がってしまいました。ES2.0を少ない学習コストで使えるようにしてくれるのがGLKitです。GLKitによるとGLKitの機能は大きく分けて4つあります。テクスチャローダOpenGLはテクスチャに対応しているのですが、ファイルからテクスチャを生成する機能は提供していないので、自前でファイルを展開してビットマップを作る必要がありましたが、GLKitではその部分の機能が提供されてます。詳細はこの前のポストで。数学ライブラリ特に3D描画ではどうしてもベクトル/行列の計算等がでてくるのですが、そのために必要なクラス/関数が用意されてます。実はこれが結構便利で、GLUにあるような視野角の設定(のための行列生成)などを実現するための関数が用意されています。関連これは、iPhoneアプリでOpenGLの描画結果を表示するビューやビューコントローラ等に関するものですが、今までもテンプレートで用意されていたもので十分といえば十分だったので、そこまで「おお」とはなりませんが、フレームレート調整できるようになっていたり、描画と更新のタイミングで通知してくれたり、結構気が利いてます。2.0で簡単にオブジェクトを描画できる便利なもの」です。これがあることによって、覚えなければいけないものの量が大幅に減るし、コードもかなり読みやすくなります。具体的な使い方はテンプレート解読のポストで。GLKitのメリット/デメリットメリットGLKitを使うメリットは、少ない学習コスト/短いコードで意図した描画を実現できることです。GLKitを使ったコードはシェーダー言語を使った場合に比べて短いだけでなく、意図したことが直感的に伝わるため、可読性/保守性が高いです。これはデバッグのコストを減らす事につながるので、大きなポイントです。デメリットGLKitに限った話ではありませんが、フレームワークやライブラリを使うとどうしても若干のオーバーヘッドが発生します。シビアに最適化をしていきたい場合にはそれがネックになる可能性もありますが、実際どの程度のロスがあるのかはそのうち気が向いたら調べてみましょう。(あるいは誰か調べてみてください)GLKitとゲームエンジン以上をふまえて、ではゲームを作るときにGLKitをどんどん使っていくべきか、というと一概にそうとは言えません。昨今のiPhoneゲームでは、2D/3D問わず既製のゲームエンジンを使うのが一般的になっています。前述の通りオーバーヘッドがあるため、一昔前までは処理能力の限られたスマートフォンでゲームエンジンを使う事によるデメリットも大きかったのですが、最近は端末の処理能力が大幅にアップしていることもあり、メリットの方が大きくなってきているように思います。2DではCocos2Dの出来が素晴らしく、会社に来ている学生の子達に積極的に進めています。3DではUnityが急速に普及してきています。物理演算等の機能も含まれているし、実際のところ、0からコードを書くのに比べて圧倒的にクオリティの高い/ボリュームのあるゲームを実現することができます。GLKitは正直に行ってしまえば、2Dゲームを作りたいのであれば、まずCocos2Dを検討したほうがいいでしょう。GLKitは色々便利な機能を提供してくれるとはいえ、ゲームエンジンではないのでゲームエンジンであるCocos2Dの方がより便利で使いやすいです。Cocos2DはObjective-Cで書け、物理演算も簡単に組み込めるようになっています。多少オーバーヘッドはあるとはいえ、Cocos2DよりGLKitを強く推薦する理由はあまり見当たりません。3Dに関しては、GLKitを検討すべき理由は沢山あります。Unityをはじめとする多くの3Dエンジンは学習コストがそこまで小さくなく、ライセンスも有料のものが多いこと、Objective-C以外で実装されているものに関してはiOSの機能との連携が難しい事、実装が隠蔽されていてデバッグが難しいこと、等個人で特に初心者が使う場合には様々なハードルがあるためです。GLKitを使ってアプリを作る楽しさ上記のことを踏まえても、3Dはもちろん2DゲームでもゲームエンジンではなくGLKitを使う理由はあります。それはシンプルで、自分でOpenGLの仕組みを知りながらプログラムを構築していくことができる楽しさにあります。GLKitは適度に親切で過保護ではありません。どちらかというと「意味もなく不便な部分を便利にしてくれる」程度のフレームワークであり、プログラムの重要な部分はプログラマーが自分で実装していく形になります。ここにはプログラミングの本質的な楽しさがあるように思います。仕組みを理解することでゲームエンジンを使う場合の中での動きを理解することができるようになります。いうわけで、自分で3D(2D)プログラムを作り上げていく楽しさを味わいたければGLKitを、そんな部分には興味はないから手っ取り早くゲームが作りたければゲームエンジンを検討するのがよいのかな、というのが僕の意見です。nGL的な書き方ができるのとGLU系の関数と似たものが用意されていたり、かなり便利です。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイトご意見、ご感想をお願いします。その2ARを学ぶ10連休。折り返し地点までの記録。その110連休に改めてARを勉強することにした。1日目から3日目まで。