初めてのOpenGL ES

初めてのOpenGL ES

-Amazon.co.jp: 初めてのOpenGL ES: 山下 武志: 本
--http://www.amazon.co.jp/exec/obidos/ASIN/4873114969/nilabwiki-22/ref=nosim/
--->OpenGLは、高速に3D空間を描画するためのマルチプラットフォームなライブラリです。
--->高速に動作することや、使用メモリの量を低減できるといった特徴により、ゲームやモバイル向けのアプリケーションなどに利用されています。
--->
--->本書は組み込み用途に特化したOpenGL ESを使い、Android端末をターゲットプラットフォームとして2Dや3Dの基礎から応用的な3Dプログラムの開発までを解説します。
--->モバイル向けのアプリケーション開発でOpenGL ESを使いこなすための実践的なポイントやコツを提供し、
--->3Dプログラミングを始めるために必要な知識とテクニックを効率よく学ぶことができる入門書です。
--->
--->---本書に寄せて---
--->
---> 2010年9月29日のあるつぶやきがきっかけとなって本書は生まれました。
--->
---> 「むしろ書いてほしい! @eaglesakuraせんせいに!」
--->
---> 当時彼はOpenGLを使って、任意の画像の任意の場所をゆらゆらと揺らすことのできるShakeDroidという魅惑的なアプリをAndroid Marketにリリースしていました。それ故、Twitter上では「揺下(ゆらした)」などの通称で呼ばれることとなり、Android界の三大山下のうちの一人として名を馳せていたのでした。
--->
---> Android系のイベントの飲み会に参加したときにお見かけしたのが最初なのですが、近年稀に見るハングリーさを備えた逸材であることは一目見ただけでも明白でした。
---> OpenGLの本は数自体が少なく、ましてやOpenGL ESともなると、最適な入門書が少ないと常日頃嘆いていたところ、とあるAndroid開発者の小さな集まりで、後に本書の著者となる山下氏がAndroidのOpenGL講座の講師をしていたことを知りました。これは彼に書いてもらうしかあるまいと思い、AndroidのOpenGLの本を書いてはどうかと持ちかけたのが、運命の2010年9月29日です。
---> 早速山下氏に見出し案を作成してもらい、それを10月1日にオライリー・ジャパンの編集長にお見せしたところ、なかなかの好感触。あれよあれよという間に書籍化が決定しました。
---> 当初、2010年中に書き上げる予定だったと思うのですが、様々な苦労があったのでしょう、もう少しで一年越しの本になるところでしたが、ようやく完成となり、喜ばしいかぎりです。そして、一読者としては素晴らしい本が生まれたことを非常にありがたく思います。
--->
---> 本書は難しい部分も噛み砕いて説明してあり、随所に遊び心とこだわりが散りばめられているため、Androidからプログラミングに興味を持ち始めた読者にも、きっとわかりやすい、偉大な入門書となるでしょう。

-O'Reilly Japan - 初めてのOpenGL ES
--http://www.oreilly.co.jp/books/9784873114965/
--->OpenGLは、高速に3D空間を描画するためのマルチプラットフォームなライブラリです。高速に動作することや、使用メモリの量を低減できるといった特徴により、ゲームやモバイル向けのアプリケーションなどに利用されています。
--->本書は組み込み用途に特化したOpenGL ESを使い、Android端末をターゲットプラットフォームとして2Dや3Dの基礎から応用的な3Dプログラムの開発までを解説します。モバイル向けのアプリケーション開発でOpenGL ESを使いこなすための実践的なポイントやコツを提供し、3Dプログラミングを始めるために必要な知識とテクニックを効率よく学べる入門書です。
--->
--->目次
--->
--->本書に寄せて
--->はじめに
--->
--->1部 2DとしてOpenGL ESを扱う
--->
--->1章 OpenGL ESとAndroid
---> 1.1 OpenGLとは何なのか?
---> 1.2 OpenGL ESのバージョン
---> 1.2.1 Androidの対応バージョン
---> 1.3 OpenGL ESで利用するデータ型
--->
--->2章 Hello OpenGL ES!
---> 2.1 プロジェクトのセットアップ
---> 2.1.1 SDKのインストール
---> 2.1.2 プロジェクト作成
---> 2.1.3 描画用SurfaceViewを追加する
---> 2.2 画面のどこを使うのか?
---> 2.2.1 画面を塗りつぶす
---> 2.2.2 GLSurfaceViewの制限
--->
--->3章 簡単な図形を描画する
---> 3.1 正規化されたデバイス座標系の存在
---> 3.2 バイトオーダーの問題とjava.nioの存在
---> 3.3 OpenGL ESへの関連付けと描画
---> 3.3.1 頂点を使いまわすことによる最適化
---> 3.3.2 トライアングルストリップの活用
---> 3.4 任意座標への描画
---> 3.5 任意の色での描画
--->
--->4章 画像を描画する
---> 4.1 テクスチャ、U、Vという存在
---> 4.2 テクスチャの制限
---> 4.3 テクスチャを読み込む
---> 4.4 頂点のUV座標を指定する
---> 4.5 テクスチャの指定領域を利用する
---> 4.6 文字を描画する
---> 4.7 複数枚のテクスチャを扱う
--->
--->5章 画像をブレンドする
---> 5.1 ブレンディングという要素
---> 5.2 アルファブレンディング
---> 5.2.1 ブレンド計算を理解する
--->
--->2部 メモリの効率化と速度向上のために
--->
--->6章 行列のできるOpenGL
---> 6.1 行列とは?
---> 6.1.1 移動行列
---> 6.1.2 拡大縮小行列
---> 6.1.3 回転行列
---> 6.2 行列を乗算する際の注意点
---> 6.3 OpenGL ESで行列を操作する
---> 6.3.1 行列の適用順序
---> 6.4 行列を利用して任意の四角形を描画する
---> 6.5 行列でUV座標を操作する
--->
--->7章 VertexBufferObjectで描画速度を向上する
---> 7.1 VertexBufferObjectとは?
---> 7.2 VBO利用の流れ
---> 7.3 UVバッファをVBOで利用する
---> 7.4 1つのVBOに頂点情報をまとめる
--->
--->3部 3Dの基本
--->
--->8章 カメラの概念
---> 8.1 現実をコンピュータ上に置き換えるということ
---> 8.1.1 gluPerspective関数
--->
--->9章 インデックスバッファの存在
---> 9.1 インデックスバッファの必要性
---> 9.2 「頂点」と「ポリゴン」の分離
---> 9.3 インデックスバッファの利用
---> 9.4 インデックスバッファの利用例
---> 9.4.1 TRIANGLE_STRIPを利用してインデックスバッファを複数個
--->  用意した場合(例1)
---> 9.4.2 TRIANGLE_STRIPを利用してインデックスバッファを1つ
--->  用意した場合(例2)
---> 9.4.3 TRIANGLESによる正六面体描画(例3)
---> 9.5 インデックスバッファのVBO
--->
--->10章 本格的に3Dを扱う
---> 10.1 「ローカル座標」と「ワールド座標」の考え方
---> 10.2 正六面体を複数描画する
---> 10.3 Zバッファの存在
---> 10.2.1 Zファイティングの存在
---> 10.2.2 指定位置に描画するための行列
--->
--->11章 さらに本格的に3Dを利用する
---> 11.1 2Dと3Dを共存する
--->
--->4部 3D知識の応用
--->12章 応用的な3D知識
---> 12.1 ライトとマテリアル
---> 12.2 3Dプログラムにおけるライトとは?
---> 12.3 3Dプログラムにおけるマテリアルとは?
---> 12.3.1 頂点の向きを考える
---> 12.3.2 ライトの情報を変更する
---> 12.4 マテリアルの設定
--->
--->13章 フォグによる遠近の演出
---> 13.1 フォグを使ってみる
---> 13.1.1 リニア方式でフォグを指定する
---> 13.2 ポイントスプライトの活用
---> 13.3 ポリゴンの表と裏
--->
--->5部 実践編
--->
--->14章 実際のツールと連携する
---> 14.1 3DCG用ツールについて
---> 14.2 3DCG用ツールとは?
---> 14.3 モデルを構成する要素
---> 14.3.1 Metasequoia形式からOpenGL ESへの読み込み
---> 14.4 OpenGL ESへの転送
---> 14.5 画面内にモデルを表示する
--->
--->15章 より実践的にOpenGL ESを利用する
---> 15.1 「アルファテスト」を利用する
---> 15.2 「ポリゴンの反転」を利用する
---> 15.3 おわりに
--->
--->付録A 圧縮テクスチャを利用する
---> A.1 圧縮テクスチャとは?
---> A.1.1 無圧縮テクスチャについて
---> A.2 圧縮テクスチャの例
---> A.3 256色BitmapをAndroidで直接読み込む
---> A.4 256色パレットテクスチャを生成する
--->
--->付録B GLSurfaceViewから脱却する
---> B.1 GLSurfaceViiewの問題点とその改善
---> B.1.1 SurfaceViewの準備
---> B.1.2 SurfaceHolderのコールバックを待つ
---> B.2 描画用メソッドの実装
---> B.3 休止・復帰処理の追加
--->
--->付録C ライブ壁紙でOpenGL ESを利用する
---> C.1 ライブ壁紙とは?
---> C.2 ライブ壁紙を作成する
---> C.2.1 EngineがOSから受け取るメッセージ
---> C.3 XMLの編集
--->
--->索引

-learning-opengl-es - 「初めてのOpenGL ES」サンプルコード - Google Project Hosting
--http://code.google.com/p/learning-opengl-es/

-nilog: まずは、OpenGL ES 1.0 の GLSurfaceView で 2D 描画から。 - 初めてのOpenGL ES / 山下武志 http://t.co/BUoDDPIDtQ (2013-03-13)
--http://www.nilab.info/nilog/?type=twitter&id=311575447991382016
--

-nilog: gluLookAt にはカメラ位置、注視位置、天井方向を指定する。 - 初めてのOpenGL ES / 山下武志 http://t.co/x78SC2Faz7 (2013-09-06)
--http://www.nilab.info/nilog/?type=twitter&id=375947436381843457
--

-nilog: gluPerspective にはY方向の画角、画面の縦横比(アスペクト比)を指定し、ニアクリップとファークリップで「世界の果て」を教える。視体積。 - 初めてのOpenGL ES / 山下武志 http://t.co/mnRTDPo3ZY (2013-09-06)
--http://www.nilab.info/nilog/?type=twitter&id=375949394517831681
--