マルチプラットフォームのための
OpenGL ES入門 応用編
Android/iOS 対応グラフィックスプログラミング
- 著者 山下 武志
- 判型 B5変型、480頁
- 本体価格 4,800円
- ISBN 978-4-87783-343-5
2014年6月10日 初版第1刷発行
本書の記載内容について訂正があります。
こちらを参照してください。
「マルチプラットフォームのためのOpenGL ES入門 入門編」のページはこちら
本書について
OpenGL(Open Graphics Library)は3Dグラフィックスを描画するためのマルチプラットフォームライブラリです。本書ではOpenGLの中でも組み込みプラットフォーム向けに特化したAPI群であるOpenGL ES(OpenGL for Embedded Systems)のバージョン2.0について解説しています。
2008年以前、OpenGL ESは今よりも少しだけマイナーな立ち位置にいました。OpenGL ESを実行可能な環境の多くは閉鎖的であり、仮に開発をしたとしても実機での実行をするためには特別な権限が必要だったのです。
ですが、その後のAndroidやiOSという新たなプラットフォームの登場により、状況は一変しました。それらはOS固有の描画処理の他に、OpenGL ESの実行環境を搭載していました。そしていち早く当時の最新版であるOpenGL ES 2.0にも対応し、普及の一助となっています。
Andorid/iOSは一個人が安価にアプリを開発・配布可能です。そして同時に、OpenGL ESについての知識を必要とする方も一気に増えました。
さらに言えば、「Android/iOSで同じアプリをリリースしたい」という需要も増えています。
本書では広く普及しているOpenGL ES 2.0の解説に加え、Android/iOSで同時にコーディングするための注意点についても解説します。
本書「応用編」では3D描画及び、OpenGL ESをアプリに組み込む際に必要な知識となるEGL/EAGLの知識も提供します。
目 次
- 第1章 Android版のセットアップ
- 1.1 サンプルプログラムの入手
- 1.2 必要なソフトウェアのダウンロード
- 1.3 JDKのインストール
- 1.4 Android SDKをインストールする
- 1.5 SDKのアップデート
- 1.6 NDKのインストール
- 1.7 Eclipseのセットアップ
- 1.8 プロジェクトのインポート
- 1.9 Android NDKでgl2.hとgl2ext.hを参照する方法
- 1.10 実機へインストール
- 第2章 iOS版のセットアップ
- 2.1 Xcodeのインストール
- 2.2 サンプルプロジェクトの起動
- 2.3 実機インストールの準備
- 第3章 サンプルプログラムと補助関数
- 3.1 サンプルアプリについて
- 3.2 スケルトンプログラム【sample_skelton.c】
- 3.3 OpenGL ESの座標系とスプライト座標系
- 第4章 深度バッファ
- 4.1 頂点にZ座標を加える【sample_depth_order.c】
- 4.2 深度バッファを有効化する
- 4.3 深度バッファを知る
- 4.4 描画順による問題【sample_blend_order.c】
- 第5章 「カメラ」の概念による本格的な3D
- 5.1 現実世界をコンピュータに置き換える
- 5.2 3D空間にカメラを設置する【sample_camera_setup.c】
- 第6章 効率的な描画のための頂点情報
- 6.1 複雑な3D形状を作る時の問題点【sample_camera_cube.c】
- 6.2 データを構造体にすることによる扱いの簡略化【sample_camera_cube_datastruct.c】
- 6.3 頂点構造体によるアクセスの簡略化【sample_camera_cube_vertexstruct.c】
- 6.4 頂点構造体の型によるアラインメント【sample_camera_cube_vertexstruct_alignment.c】
- 6.5 インデックスバッファによる効率化【sample_camera_cube_vertexstruct_indices.c】
- 6.6 縮退化による効率化【sample_camera_cube_vertexstruct_indices_degenerate.c】
- 6.7 縮退化したポリゴンを2D描画で利用する
- 6.8 まとめ
- 第7章 実践的な3D描画
- 7.1 PMDファイルの描画を行う
- 7.2 PMDファイルを読み込む【sample_pmd_load.c】
- 7.3 シェーダーの工夫で演出を行う【sample_pmd_facechange.c】
- 第8章 マルチパスレンダリングを使った演出
- 8.1 半透明を正しく描画する
- 8.2 ポリゴンの裏表を使ったマルチパスレンダリング
- 第9章 バッファオブジェクトの活用
- 9.1 複数のモデルを描画する【sample_pmd_multirender.c】
- 9.2 バッファオブジェクトで描画を高速化する【sample_pmd_multirender_vbo.c】
- 第10章 glFlushとglFinishの違い
- 10.1 OpenGL ESの仕組みとglFinish/glFlushの特性
- 第11章 オフスクリーンレンダリング
- 11.1 テクスチャへレンダリングを行う【sample_pmd_framebuffer.c】
- 11.2 背景の透過を扱う【sample_pmd_framebuffer_alpha.c】
- 11.3 深度バッファを描画する
- 11.4 GL_OES_depth_texture非対応端末で深度テクスチャを描画する【sample_pmd_framebuffer_depth_notsupport.c】
- 11.5 デプスシャドウを描画する【sample_pmd_framebuffer_depthshadow.c】
- 11.6 まとめ
- 第12章 AndroidでのOpenGL ES初期化方法
- 12.1 EGL/EAGLとは
- 12.2 EGLの初期化方法
- 12.3 ライブ壁紙として使用する
- 12.4 システムレイヤーとして使用する
- 12.5 SurfaceViewとTextureViewを知る
- 12.6 まとめ
- 第13章 iOSでのOpenGL ES初期化方法
- 13.1 EGLとの違い
- 13.2 ViewControllerによる画面遷移とGLスレッド処理
- 13.3 UIViewをカスタマイズしてOpenGL ESを利用する
- 13.4 複数スレッドから同じEAGLContextへアクセスする
- 13.5 まとめ
- 第14章 OpenGL ESのマルチスレッド制御
- 14.1 描画とは別スレッドでリソースの生成を行う
- 14.2 マルチコンテキストの考え方
- 14.3 非同期でリソース読み込み【sample_async_load.c】
- 14.4 EGLのマルチスレッド制御
- 14.5 EAGLのマルチスレッド制御
- 14.6 まとめ
■正誤表■ 2014/5/19
本文の内容に誤りがありました。 お詫びして訂正いたします。
P.365-366 リスト12.46(ソースコード掲載の誤り)
239行目〜249行目は「238: 中略...」に含まれる行です。無視してください。