強火で進め

このブログではプログラム関連の記事を中心に書いてます。

iPhoneでOpenGL ESを覚えるときのおすすめ本

今回、iPhoneOpenGL ESで「はちゅね」を作ってみましたが実はOpenGLのプログラム初めてだったりします。色々とどんなことができるとか知識では知ってましたが実際にはまったくプログラムをしたことがありませんでした。

そこでひたすら参考になりそうなサイトを調べたり、参考になりそうな本でそこまで高額でない本などは片っ端から買って勉強しました(最終的には高額な本も買わないと無理でしたけど(笑))。
購入した本のうちとても参考になったものを紹介します。あくまで自分が参考となったという基準で書きますので最終的にはご自分で判断して購入して下さい(値段が高いのが多いですし(^_^;))。

自分の場合は基本的にOpenGLの本だけで覚えました。iPhoneで対応しているOpenGLOpenGL ES 1.1というものです。こちらはOpenGL 1.5をベースに一部に仕様変更が加えられているものになります。

そのためOpenGLの勉強するだけでも「はちゅね」を作るぐらいは問題無くできました。

それでは本の紹介を始めます。まずはこちらの2冊「GLUTによるOpenGL入門」「GLUTによるOpenGL入門2 テクスチャマッピング」。

とても噛み砕いた表現で丁寧に解説がしてあり大変読みやすかったです。

GLUTによるOpenGL入門―「OpenGL Utility Toolkit」で簡単3Dプログラミング! (I・O BOOKS)

GLUTによるOpenGL入門―「OpenGL Utility Toolkit」で簡単3Dプログラミング! (I・O BOOKS)

GLUTによるOpenGL入門2 テクスチャマッピング [CD-ROM付]

GLUTによるOpenGL入門2 テクスチャマッピング [CD-ROM付]

GLUTによるOpenGL入門」ではWindowsLinuxMacそれぞれの環境でのOpenGLGLUT(描画処理以外のOSの差異を吸収するライブラリ)のセットアップから始まりまったくOpenGLを知らない人に向けた解説がされています。

GLUTによるOpenGL入門」についてはこちらのサイトでの解説が本としてまとまったみたいなのでサイトとほぼ同じです。だけどこんな良いサイトを作ってくれてありがとうという意味で買ってあげて下さい。お願いします。ちなみに自分は両方買いました。

次は定番本。赤本やred bookなどと呼ばれている「OpenGLプログラミングガイド」です。今、翻訳本は第5版のものが出ていて「OpenGLプログラミングガイド 原著第5版」というタイトルが付いています。

OpenGLプログラミングガイド 原著第5版

OpenGLプログラミングガイド 原著第5版

この本もチュートリアルに近い内容ですがかなり網羅的な記載がされています。そのため実際のプログラムでの使用度があまり高くないものについてもしっかりとページが割かれているため順番に全て読むにはかなり根気が要ります。最初に紹介した本を一通り読み終わってから必要な部分だけ読むのがおすすめです。

自分の場合は最初の本を読んだ後にiPhoneに移植しても動作せず、調べてみたところbegin()〜end()形式での描画方法が使えないと分かってから読み始めたので理解しやすかったです。P.65からの頂点配列やP.81からのバッファオブジェクトの部分を覚え、こちらの方法で描画処理を記述すればiPhoneで描画が行えます。

なお、原書の方がかなり安いので英語がとっても得意である方はこちらの方がお得です。しかし、専門用語も多いでしょうからよっぽど自信がある方意外にはおすすめできません。

OpenGL(R) Programming Guide: The Official Guide to Learning OpenGL(R), Version 2.1 (6th Edition)

OpenGL(R) Programming Guide: The Official Guide to Learning OpenGL(R), Version 2.1 (6th Edition)

  • 作者: OpenGL Architecture Review Board,Dave Shreiner,Mason Woo,Jackie Neider,Tom Davis
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2007/08/09
  • メディア: ペーパーバック
  • 購入: 1人 クリック: 18回
  • この商品を含むブログ (5件) を見る

次に紹介するのは「OpenGL Superbible: Comprehensive Tutorial and Reference」。こちらも良い本ではあるのですが英語の本しか出ていません。あと、1つのサンプルのソースの量が多く、また共通のライブラリなども使っているためプログラムを追うのに苦労します。とりあえず自分はいまのところ使い方がイマイチ理解できないコマンドが出てきたときに実際のプログラムではどのように使われているのかを確認するために使っています。全ソースコードをマシンに入れて検索して使っています。

良い本ではあるのでそのうち全部読みたいです。

OpenGL® SuperBible: Comprehensive Tutorial and Reference

OpenGL® SuperBible: Comprehensive Tutorial and Reference

  • 作者: Richard S. Lipchak, Benjamin Haemel, Nicholas S Wright
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2007/06/18
  • メディア: ペーパーバック
  • クリック: 7回
  • この商品を含むブログ (9件) を見る

次はOpenGLの本ではないのですが3D全般の数学の知識を覚えるために「実例で学ぶゲーム3D数学」をおすすめします。
3Dをするときは行列や線形代数、ベクトル解析など本を買って勉強すること進めるサイトなども多いですし、自分もそのような本で覚えました。

しかし、最近3D数学に特化したこのような本が出ましたのでこちらをおすすめします。

今までの経験では線形代数の本などで勉強すると1冊の中で実際にプログラムで使えるなぁという部分は10〜20%程度であり、あまり効率的でありませんでした。自分としては勉強済みの部分も多いのですが復習と辞書的な使い方で活用しています。

実例で学ぶゲーム3D数学

実例で学ぶゲーム3D数学

おすすめ本としては以上です。赤本に対するもう一つの定番本である青本(blue book)については購入していません。

赤本にも解説に初めて出てきたタイミングでコマンドの説明があり、今のところその解説だけで問題無かったからです。

自分は今回こちらの本とOpenGL解説サイトの情報、Appleのサンプルを参考に作り上げることができました。

最後に逆に購入をする前に注意が必要な本を1つ紹介しておきます。

最近OpenGL ES 2.0の本として以下のものが出ました。

OpenGL® ES 2.0 Programming Guide

OpenGL® ES 2.0 Programming Guide

これを知ったときよし、買うか!と思ったのですが念のためiPhoneが対応しているものとバージョンは同一なのか気になり調査したところ最初に説明した様にiPhoneが対応しているものはOpenGL ES 1.1だということがわかりました。

しかも2.0から重要な処理部分が固定機能パイプラインからプログラマブルシェーダに変わっているという大きな変更が行われているとのことでした。そのため現在この本の購入は保留しています。

こちらの本の主な部分であると思われる2.0の解説ではiPhone開発に参考になる情報は限定的だと思うからです(もし、実際に買った人がいたらどれだけiPhoneでやるのに参考になったかコメントで教えて下さい!)。

なお、OpenGL ES 1.1以前と2.0以降の比較情報は以下のサイトが詳しいです。

T.Teranishi:OpenGL:OpenGL ES
http://www.asahi-net.or.jp/~yw3t-trns/opengl/opengles/index.htm

(2008/11/23 追記)
こちらの資料もおすすめです。

第14回 ビジュアリゼーションカンファレンスの講演資料が公開されました(※これからOpenGL ESやろうと思ってるは必見) - 強火で進め
http://d.hatena.ne.jp/nakamura001/20081118/1227033422

ちょっと長くなったので参考になったサイトとどういう順番でOpenGLの勉強を進めたかについては次回のエントリーで紹介します。