《普通高等教育“动画与数字媒体专业”规划教材 iPhone 3D游戏编程基础》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:袁冠远编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302330530
  • 页数:289 页
图书介绍:本书主要讲述“移动终端游戏开发”,主要培养熟练掌握移动终端(ios平台、android平台)上游戏开发能力的应用型人才。iPhone 3D 游戏编程为本专业必修课程之一,目前市面上相关的书籍很少,本书力图弥补这一空缺。本书适合本科院校的计算机专业、游戏专业的学生作为教材,也适合爱好者作为参考书。

第1章 数学基础 1

1.1向量 1

1.1.1向量相等 2

1.1.2向量的大小 2

1.1.3向量的规范化 2

1.1.4向量加法 3

1.1.5向量减法 3

1.1.6数与向量的乘积 3

1.1.7向量点积 3

1.1.8向量叉积 4

1.2矩阵 4

1.3变换 6

1.3.1平移变换 6

1.3.2缩放变换 7

1.3.3旋转变换 7

1.3.4矩阵复合 8

1.4思考题 8

第2章 创建OpenGL ES项目 9

2.1开发工具 9

2.1.1 Mac电脑 9

2.1.2 iPhone 9

2.1.3 Xcode 9

2.1.4 Objective-C 10

2.2 OpenGL ES简介 10

2.3选择适当的OpenGL ES版本 11

2.4使用向导创建OpenGL ES项目 11

2.5从头开始创建OpenGL ES项目 15

2.5.1创建Window-based Application 15

2.5.2清理OpenGLES无关信息 16

2.5.3连接OpenGL与Quartz库 19

2.5.4添加UIView子类GLView 19

2.5.5运行结果 27

2.6应用程序设置 27

2.6.1设置应用程序图标 27

2.6.2处理启动画面 28

2.6.3处理状态栏 28

2.6.4运行结果 28

2.7思考题 29

第3章 基本图元 30

3.1 OpenGLES坐标系 30

3.1.1左手和右手坐标系 30

3.1.2 OpenGLES默认坐标系 30

3.2图元 31

3.2.1点图元 31

3.2.2渲染点图元 31

3.2.3线图元 36

3.2.4渲染线图元 37

3.2.5三角形图元 41

3.2.6渲染三角形图元 42

3.3思考题 46

第4章 游戏循环 47

4.1基本的游戏循环 47

4.2几种常见的游戏循环体 48

4.2.1基于帧的循环体 48

4.2.2基于时间的不定间隔循环体 49

4.2.3基于时间的固定间隔循环体 49

4.3 IOS游戏循环驱动器 50

4.4 IOS游戏循环的实现 51

4.4.1修改类声明 51

4.4.2实现新定义的方法 52

4.5游戏(动画)的启动与停止 54

4.6实现简单动画 55

4.7思考题 56

第5章 颜色 57

5.1颜色理论 57

5.1.1 RGB模式 57

5.1.2颜色深度 57

5.1.3颜色立方体模型 57

5.2设置渲染颜色 58

5.3顶点颜色 59

5.4着色模式 60

5.5思考题 61

第6章 顶点格式 62

6.1顶点属性 62

6.2顶点属性的数据类型 63

6.3支持不同数据类型的函数 63

6.4交错顶点数组 64

6.4.1原理 64

6.4.2使用交错顶点数组 65

6.5使用结构体定义顶点数据 66

6.6思考题 68

第7章 纹理 69

7.1概述 69

7.2纹理坐标 69

7.3在OpenGL ES中使用纹理 71

7.3.1定义顶点信息结构体 71

7.3.2设置顶点信息 71

7.3.3创建纹理 71

7.3.4渲染带纹理属性图元 77

7.3.5运行 78

7.4纹理寻址模式 78

7.4.1重复纹理寻址模式 79

7.4.2箝位纹理寻址模式 79

7.4.3分别设置s轴和t轴的纹理寻址模式 80

7.5使用多个纹理 80

7.6思考题 81

第8章 渲染流水线 82

8.1渲染流水线概述 83

8.2变换过程中的坐标系 83

8.3基于OpenGLES的图形变换 84

8.3.1概述 84

8.3.2世界变换 86

8.3.3视图变换 86

8.3.4投影变换 89

8.3.5视口变换 92

8.4思考题 92

第9章 渲染正方体 93

9.1正方体顶点的组成 93

9.2使用OpenGL ES默认变换渲染正方体 93

9.2.1准备项目 93

9.2.2定义顶点属性结构体 93

9.2.3定义顶点数据 94

9.2.4渲染 95

9.2.5运行结果 96

9.3设置投影矩阵以适配屏幕的宽高比 96

9.3.1修改投影矩阵 96

9.3.2运行结果 97

9.4设置模型变换及结果 97

9.4.1设置模型变换 97

9.4.2运行结果 98

9.5设置背面剔除及运行结果 98

9.5.1设置背面剔除 98

9.5.2运行结果 99

9.6设置透视投影及运行结果 99

9.6.1设置透视投影 99

9.6.2运行结果 101

9.6.3使用另一种透视相机模型 101

9.7设置视图变换及运行结果 102

9.7.1设置视图变换 102

9.7.2运行结果 102

9.8使立方体动起来 102

9.9渲染第二个立方体 103

9.10思考题 105

第10章 混合 106

10.1实例:半透明效果 106

10.1.1实验准备 106

10.1.2渲染玻璃 107

10.1.3运行结果 109

10.1.4启用混合 109

10.2混合原理 110

10.2.1混合原理简介 110

10.2.2混合公式 111

10.3渲染带有alpha通道的纹理 112

10.4多次纹理混合 113

10.5 alpha测试 115

10.6思考题 117

第11章 多重纹理 118

11.1原理 118

11.1.1纹理单元 118

11.1.2纹理混合瀑布 119

11.1.3纹理环境参数的设置 119

11.1.4纹理分量 120

11.1.5不同混合模式下纹理分量的计算公式 121

11.1.6合并模式(Combine)下纹理分量的计算公式 121

11.1.7操作 122

11.2实例:颜色、纹理混合 123

11.2.1定义顶点属性结构体 123

11.2.2定义顶点数据 124

11.2.3声明各四边形渲染函数 124

11.2.4渲染函数 125

11.2.5渲染第一个四边形 126

11.2.6渲染第二个四边形 126

11.2.7渲染第三个四边形 127

11.2.8渲染第四个四边形 128

11.2.9渲染第五个四边形 128

11.2.10渲染第六个四边形 130

11.3实例:精灵表动画 131

11.3.1精灵表 131

11.3.2图像合成 131

11.3.3代码实现 132

11.3.4调用代码 137

11.4实例:光照纹理 139

11.4.1原理 139

11.4.2代码 139

11.5思考题 141

第12章 光照 142

12.1光照的组成 142

12.2材质 143

12.3法线 143

12.4法线的计算 144

12.5光源 145

12.6实例:向场景中添加光照 147

12.6.1设置顶点法向量 147

12.6.2设置光源 149

12.6.3立方体渲染函数 149

12.6.4渲染各立方体 150

12.7思考题 153

第13章 创建几何体 154

13.1程序框架重构 154

13.1.1通用函数和结构体 154

13.1.2基类GLViewBase 158

13.1.3派生类GLView 164

13.2圆柱体建模 164

13.2.1剖分方法 164

13.2.2底面建模 165

13.2.3侧面建模 166

13.2.4圆柱体类 166

13.2.5调用圆柱体类 170

13.3球体建模 174

13.3.1剖分方法 174

13.3.2球体类 176

13.3.3调用球体类 180

13.4思考题 182

第14章 顶点索引 183

14.1原理 183

14.2实例:使用顶点索引建模球体 184

14.3思考题 188

第15章 顶点缓存对象 189

15.1原理 189

15.1.1定义缓存对象名 189

15.1.2生成缓存对象名 189

15.1.3绑定缓存对象 189

15.1.4传输缓存数据 190

15.1.5渲染 190

15.2使用顶点缓存对象优化球体模型 190

15.3思考题 194

第16章 深度缓存 195

16.1原理 195

16.1.1准备深度缓存 196

16.1.2清除深度缓存 197

16.1.3启用深度测试 197

16.1.4设置深度测试函数 197

16.1.5渲染 198

16.2实例:使用深度缓存 198

16.2.1准备深度缓存 198

16.2.2清除深度缓存 198

16.2.3启用深度测试渲染图元 199

16.2.4渲染结果 200

16.3控制深度缓存更新 200

16.4思考题 200

第17章 模板缓存 201

17.1原理 201

17.1.1准备模板缓存 202

17.1.2清除模板缓存 203

17.1.3启用模板测试 204

17.1.4设置模板测试函数 204

17.1.5设置模板更新方式 204

17.1.6渲染 205

17.2实例:镜面效果 205

17.2.1概述 205

17.2.2镜面变换 206

17.2.3准备模板缓存 206

17.2.4清除模板缓存 207

17.2.5渲染 207

17.3思考题 208

第18章 加载3D模型 209

18.1常见3D模型文件格式简介 209

18.2 OBJ文件格式简介 211

18.3一些OBJ关键字 211

18.4 MTL关键字 212

18.5 OBJ文件实例 214

18.6 MTL文件实例 214

18.7 WaveFrontObjLoader 215

18.7.1 WaveFrontObjLoader的特点 215

18.7.2 WaveFrontObjLoader的组成 215

18.7.3 WaveFrontOBJScene类 215

18.7.4 WaveFrontOBJ Group类 216

18.7.5使用方式 216

18.8实例:加载OBJ模型并渲染 218

18.8.1准备工作 218

18.8.2修改GLView类的定义 219

18.8.3初始化 219

18.8.4渲染 220

18.9改进 221

18.9.1改进材质类 221

18.9.2修改WaveFrontOBJGroup类的定义 221

18.9.3修改WaveFrontOBJGroup类的实现 222

18.9.4为WaveFrontOBJScene类添加render方法 226

18.9.5调用改进的类 226

18.9.6渲染结果 228

18.10思考题 228

第19章 3D碰撞检测 229

19.1定义包围信息 229

19.2为WaveFrontOBJGroup类添加包围信息 230

19.2.1修改WaveFrontOBJGroup类的定义 230

19.2.2实现Bounding属性 232

19.2.3实现calculateBoundingInfo方法 232

19.3为WaveFrontOBJScene类添加包围信息 233

19.3.1修改WaveFrontOBJScene类定义 233

19.3.2实现Bounding属性 234

19.3.3实现calculateBoundingInfo方法 235

19.4渲染包围盒 236

19.4.1概述 236

19.4.2添加WireFrameBox类 236

19.4.3修改GLView类 237

19.4.4渲染结果 240

19.5实现碰撞检测 240

19.5.1概述 240

19.5.2相关算法 241

19.5.3添加Square类,用于绘制按钮 242

19.5.4修改GLView类,实现实例 244

19.5.5测试程序 250

19.6扩展讨论 250

19.7思考题 251

第20章 地形绘制基础 252

20.1高度图 253

20.1.1原理 253

20.1.2创建高度图 253

20.1.3加载RAW文件 253

20.1.4访问高度图 254

20.2创建地形几何信息 254

20.2.1 Terrain类的定义 254

20.2.2顶点的计算 256

20.2.3索引的计算 258

20.2.4纹理的计算 259

20.3渲染地形 261

20.4在地形中“行走” 261

20.5调用地形类 265

20.6思考题 268

第21章 天空绘制基础 269

21.1原理 269

21.2实现天空盒 270

21.2.1创建天空盒渲染数据 270

21.2.2创建天空盒纹理 271

21.2.3渲染天空盒 272

21.3调用天空盒类 273

21.4思考题 276

第22章 拾取 277

22.1概述 277

22.2原理 278

22.2.1射线的定义 278

22.2.2计算拾取射线 278

22.2.3变换物体到观察坐标系 280

22.2.4射线/物体相交判定 280

22.2.5封装Picking类 282

22.3拾取实例 282

22.3.1修改Sphere类 282

22.3.2修改GLView类的定义 283

22.3.3初始化变量 284

22.3.4实现渲染包围球方法 285

22.3.5修改renderRoles函数 285

22.3.6实现拾取功能 287

22.3.7修改touchesBegan 函数 288

22.3.8运行 288

22.4思考题 288

参考文献 289