OpenGL ESの参考書
このところ、OpenGL ESをつかったグラフィックにチャレンジしてます。そのなかで参考になった資料を軽く紹介。
まず前提として、僕自身もともとOpenGLのプログラミングを2年くらいやっていたということを理解していただく必要があります。もう4, 5年以上前の話で、当時はMac OS X上をプラットフォームとして使っていました。
当時、OpenGLを始めるにあたって参考にしたのは、ずばりこの三つです。
1. GLUTによる「手抜き」OpenGL入門 (和歌山大学 システム工学部 デザイン情報学科 床井浩平さん)
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
OpenGLはMacでもWindowsでも使えるプラットフォームによらないAPIですが、描画を行うウィンドウを作ったりするために、実際にはOSのAPIを叩かざるを得ない部分もあります。GLUTはThe OpenGL Utility Toolkitの略で、そういったOSとOpenGLのあいだの煩雑な部分を代行してくれるツールきっとです。GLUTを使うことで、OpenGLの本質的な部分に集中してプログラミングが可能です。
2. NeHe Productions: OpenGL Lessons
http://nehe.gamedev.net/
なにごとも習うより慣れろ。NeHeのOpenGLサンプル集です。現在50近いレッスンが公開されています。解説も丁寧で、これを追って行くだけでOpenGLプログラミングの実際をしることができます。
3. OpenGL プログラミングガイド
OpenGLプログラミングガイド 原著第5版 | |
松田 晃一 ピアソンエデュケーション 2006-12-19 売り上げランキング : 33215 おすすめ平均 待望のバイブルついに OpenGL 2.0対応で帰ってきました お勧めです! Amazonで詳しく見る by G-Tools |
最後は有名な「赤本」です。これは上記二つで勉強した後にリファレンス代わりとして買いました。当時はたしかまだ日本語版がなく、英語版を使いましたが、概念とAPIの名前が一致するので、それほど苦ではありませんでした(例えば FrustumとglFrustum, OrthogonalとglOrtho)
4. これはおまけ
OpenGL Programming on MAC OS X: Architecture, Performance, And Integration | |
Robert P. Kuehne Addison-Wesley Pub (Sd) 2007-12-21 売り上げランキング : 22147 Amazonで詳しく見る by G-Tools |
NSOpenGLViewの使い方、QuartzとOpenGLの関係などを知るにはいいです。
で、iPhoneですが、今回 iPhone上でのOpenGLを勉強するにあたって二つのポイントがありました。
1. だいぶ忘れてしまっているので、OpenGL自体を復習したい! 笑
2. OpenGL ESとPC版のOpenGLとの違いを知りたい!
ご存知かとは思いますが、iPhoneではOpenGLから派生したモバイルデバイス用のOpenGL ES 1.x系のOpenGLが採用されています。 PCで使っていたOpenGL関数の中には使えないものがあったり、逆にOpenGL ES独自の拡張があったりするため、その差を知ることが非常に重要になります。
そこでいろいろな本を漁ってみた結果、ズバリこの本一冊でOK、自信をもってオススメできる!という本が見つかりました。それがこれです。
Mobile 3D Graphics: With OpenGL ES and M3G (Morgan Kaufmann Series in Computer Graphics) | |
Kimmo Roimela Morgan Kaufmann Pub 2008-03-31 売り上げランキング : 20703 Amazonで詳しく見る by G-Tools |
前半は、3Dグラフィックスの基礎から入ります。3次元空間の2次元平面への射影を、基本的な線形代数を使って解説します。そのあとで、レンダリング、ラスタライズといった3Dグラフィックスの基本的な流れや、ライティング、テクスチャなどはもちろん、アニメーションの基礎などのテクニックを解説します。この辺は、Direct X、OpenGLなどのAPIを問わず、役に立つ基本的な考え方を解説しているのですが、随所に「これはOpenGLではこのようなAPIで実現してます。詳しくはこの後、○○ページで」的な説明があるのが非常に実践的です。
後半はお待ちかねのOpenGL ESの解説です。PC用のOpenGLとの違いに焦点を当てた記述が多いのが特徴です。メモリやプロセッシング能力の面でいろいろと制限の多いモバイルデバイスの実情を考えて、パフォーマンスの向上、メモリ消費の低減などの最適化に比較的多くのページを割いているの見逃せません。
最後、JavaベースのAPI, M3G(Mobile 3D Graphics API for Java ME)の章がいくつかあります。こちらはまだ読んでませんが、ケータイで3Dプログラミングをするのに役に立つでしょう。
全体的に、文章もよみやすくターゲットを熟知した良書だと言えます。ただし、基礎的な考え方から最適化までをカバーしているため、一つ一つのトピックに関しての深みには欠ける感があります。ある程度OpenGLの知識のある人がOpenGL ESについて知りたい場合、もしくはこれからOpenGLを始めるきっかけとなる本と考えた方がいいでしょう。いずれにしても、上で紹介した赤本などのより網羅的な本と組みあせて読み進められることをオススメします。
最後になりましたが、OpenGL ESでAmazonなどを検索すると、次の本が一段最初に出てくるかと思います。
OpenGL ES 2.0 Programming Guide (OpenGL) | |
Aaftab Munshi Addison-Wesley Professional 2008-07-25 売り上げランキング : 7846 Amazonで詳しく見る by G-Tools |
この本はタイトルの通り OpenGL ES 2.0の解説本です。OpenGL ESには、メジャーバージョン間の下位互換性がないため、OpenGL ES 1.xを2.0のサブセットと考えることはできません。この本を買っても、iPhone上の開発にはほとんど役に立たないどころか、混乱の元になるだけなのでおすすめできません。(かくいう僕も、購入後にそのことに気づいた人間の一人です) ご注意下さい。
この記事はid: nakamura001さんの記事に触発されて書きました。参考になるポスト、ありがとうございましたー!
http://d.hatena.ne.jp/nakamura001/20081108/1226166965