巴克所著的《OpenGL ES应用开发实践指南(iOS卷)》从基本概念开始,全面介绍了OpenGL ES计算机图形的核心概念以及iOS的图形机制,包括地形、特效、模型、动画、视点变化、纹理、灯光和优化等。本书例子丰富有趣,一般每章都有多个例子,并且源码结构合理,注释全面。本书会告诉你如何在苹果公司的iOS环境中充分地利用好OpenGL ES。本书专注于最新版OpenGL ES的最新使用方法,因此可以让你避开散落在互联网上的不相关的、过时的,或者误导性的方法。本书的第11章为数学速查章节,非常方便,如果你是计算机图形的新手,可以先阅读这一章以帮助你更好地理解本书的内容。如果你熟悉桌面版OpenGL,但是不了解OpenGL ES以及GLKit,那么这本书也非常适合你。
巴克所著的《OpenGL ES应用开发实践指南(iOS卷)》是一本系统的具备实战性的OpenGL ES 3D图形开发指南。由资深iOS开发专家根据OpenGL ES最新版本撰写,不仅详细讲解了OpenGL ES与GLKit的结合使用,而且还系统讲解OpenGL ES的核心概念、技术,以及iOS的图形机制,并通过大量案例讲解了在iOS上进行OpenGL ES开发的方法和技巧。
《OpenGL ES应用开发实践指南(iOS卷)》共分12章。第1章介绍了使用嵌入式图形硬件绘制3D图形的最新方法;第2章讲解了如何使用苹果Xcode开发工具和Cocoa Touch面向对象的框架在iPhone、iPod Touch和iPad中开发包括3D图形的程序;第3章涵盖了纹理的底层概念和常用选项;第4章介绍灯光模拟背后的概念,以及利用GLKit并使用相对简单的应用代码演示灯光效果;第5章讲解并演示从任意视点渲染几何对象的技术;第6章介绍如何制作动画;第7章介绍了如何加载并使用模型;第8章讲解了特效的使用;第9章介绍能够提高iOS设备上OpenGL ES 2.0渲染性能的优化策略;第10章讲解了地形和拾取;第11章回顾了3D渲染所需的常见数学运算;第12章涵盖了一个结合地形渲染、天空盒、粒子系统、动画、变化视点、灯光、模型和碰撞检测技术的实例。
译者序
前言
第1章 使用现代移动图形硬件 / 1
1.1 3D渲染 / 1
1.2 为图形处理器提供数据 / 3
1.2.1 缓存:提供数据的最好方式 / 4
1.2.2 帧缓存 / 5
1.3 OpenGL ES的上下文 / 6
1.4 一个3D场景的几何数据 / 7
1.4.1 坐标系 / 7
1.4.2 矢量 / 9
1.4.3 点、线、三角形 / 11
1.5 小结 / 11
第2章 让硬件为你工作 / 12
2.1 使用OpenGL ES绘制一个Core Animation层 / 12
2.2 结合Cocoa Touch和OpenGL ES / 14
2.2.1 Cocoa Touch / 14
2.2.2 使用苹果开发者工具 / 15
2.2.3 Cocoa Touch应用架构 / 15
2.3 OpenGLES_Ch2_1示例 / 18
2.3.1 OpenGLES_Ch2_1AppDelegate类 / 18
2.3.2 Storyboards / 19
2.3.3 OpenGLES_Ch2_1ViewController类的interface / 19
2.3.4 OpenGLES_Ch2_1ViewController类的实现 / 20
2.3.5 支持文件 / 30
2.4 深入探讨GLKView是怎么工作的 / 31
2.5 对于GLKit的推断 / 40
2.6 小结 / 46
第3章 纹理 / 48
3.1 什么是纹理 / 48
3.1.1 对齐纹理和几何图形 / 49
3.1.2 纹理的取样模式 / 50
3.1.3 MIP 贴图 / 52
3.2 OpenGLES_Ch3_1示例 / 52
3.3 深入探讨GLKTextureLoader是怎么工作的 / 56
3.4 OpenGLES_Ch3_3示例 / 62
3.5 透明度、混合和多重纹理 / 63
3.5.1 在OpenGLES_Ch3_4示例中混合片元颜色 / 64
3.5.2 示例OpenGLES_Ch3_5中的多重纹理 / 66
3.5.3 在OpenGLES_Ch3_6示例中自定义纹理 / 68
3.6 纹理压缩 / 70
3.7 小结 / 71
第4章 散发一些光线 / 72
4.1 环境光、漫反射光、镜面反射光 / 73
4.2 计算有多少光线照向每个三角形 / 74
4.3 使用GLKit灯光 / 79
4.4 OpenGLES_Ch4_1示例 / 80
4.5 把灯光烘焙进纹理中 / 86
4.6 片元计算 / 87
4.7 小结 / 88
第5章 改变你的视点 / 89
5.1 深度渲染缓存(Depth Render Buffer) / 89
5.2 例子OpenGLES_Ch5_1和例子OpenGLES_Ch5_2 / 91
5.3 深入探讨不用GLKit添加深度缓存 / 96
5.4 变换 / 98
5.4.1 基本变换 / 98
5.4.2 顺序很重要 / 101
5.4.3 projectionMatrix和modelviewMatrix / 102
5.4.4 textureMatrix / 105
5.5 复合变换手册 / 107
5.5.1 倾斜 / 107
5.5.2 围着一个点旋转 / 107
5.5.3 围着一个点缩放 / 107
5.6 透视和平截头体 / 108
5.7 小结 / 109
第6章 动画 / 110
6.1 场景内移动:例子OpenGLES_Ch6_1 / 111
6.1.1 看向一个特定的3D位置 / 111
6.1.2 使用时间 / 113
6.2 动画化顶点数据 / 116
6.2.1 使用索引顶点 / 118
6.2.2 OpenGLES_Ch6_2示例 / 119
6.3 动画化颜色和灯光:例子OpenGLES_Ch6_3 / 122
6.4 动画化纹理 / 126
6.4.1 OpenGLES_Ch6_4示例 / 126
6.4.2 OpenGLES_Ch6_5示例 / 128
6.5 小结 / 130
第7章 加载和使用模型 / 131
7.1 建模工具和格式 / 132
7.2 读取modelplist文件 / 136
7.3 OpenGLES_Ch7_1示例 / 138
7.4 高级模型 / 142
7.4.1 骨骼动画 / 142
7.4.2 蒙皮 / 147
7.4.3 逆动力学和物理模拟 / 150
7.5 小结 / 150
第8章 特效 / 151
8.1 天空盒 / 151
8.2 深入探讨GLKSkyboxEffect是怎么工作的 / 154
8.3 粒子 / 164
8.4 公告牌 / 170
8.5 小结 / 177
第9章 优化 / 178
9.1 尽可能减少渲染 / 178
9.1.1 基于视平截体的剔除 / 179
9.1.2 简化 / 189
9.2 不要猜:解析(Profile) / 189
9.2.1 工具OpenGL ES Performance Detective / 190
9.2.2 工具Instruments / 191
9.3 尽量减少缓存复制 / 192
9.4 尽量减少状态变化 / 192
9.5 小结 / 193
第10章 地形和拾取 / 195
10.1 地形的实现 / 195
10.1.1 高度图 / 196
10.1.2 地形瓦片 / 197
10.1.3 地形效果 / 200
10.2 添加模型 / 205
10.2.1 模型放置 / 206
10.2.2 模型效果 / 206
10.3 OpenGL ES摄像机 / 208
10.4 拾取 / 213
10.5 优化 / 221
10.6 小结 / 228
第11章 数学速查 / 229
11.1 概述 / 229
11.2 解码矩阵 / 230
11.2.1 从平截体获取矩阵 / 233
11.2.2 透视 / 236
11.2.3 矢量的坐标轴分量 / 237
11.2.4 点变换 / 238
11.2.5 转置矩阵和逆矩阵 / 240
11.3 四元法 / 241
11.4 常用的图形数学 / 242
11.4.1 简单矢量运算 / 242
11.4.2 矢量标量积 / 243
11.4.3 矢量的矢量积 / 243
11.4.4 model-view矩阵 / 244
11.4.5 投影矩阵 / 245
11.5 小结 / 245
第12章 理清整体思路 / 246
12.1 概述 / 246
12.2 一切如故 / 248
12.2.1 控制器子系统 / 249
12.2.2 模型子系统 / 250
12.2.3 视图子系统 / 255
12.3 设备动作 / 263
12.4 小结 / 265