OpenGL ES 3.x游戏开发-(下卷)

OpenGL ES 3.x游戏开发-(下卷)

作者:吴亚峰

出版社:人民邮电出版社

出版年:2016-11-01

评分:5分

ISBN:9787115433657

所属分类:网络科技

书刊介绍

OpenGL ES 3.x游戏开发-(下卷) 内容简介

内容覆盖了学习OpenGL ES 3.x的必知必会的知识到基于OpenGL ES 3.x实现各种基础特效的技术 ● 介绍了OpenGL ES 3.x渲染管线的知识和使用OpenGL ES 3.x的着色语言 ● 介绍了OpenGL ES 3.x中的光照、纹理映射、3 D 模型加载、混合和雾等基础特效, 以及常用的 3 D 开发技巧, 如标志板、天空盒、镜像绘制等。 ● 既介绍了Android下使用SDK基于Java进行开发,又介绍了Android下使用NDK基于C进行开发,iOS下使用xCode基于C开发,还介绍了基于HTML5的3D渲染技术WebGL。 ● 给出了基于NDK的大型游戏案例——火力篮球和iOS下的3D游戏案例——方块翻转,方便读者快速上手应用。

OpenGL ES 3.x游戏开发-(下卷) 本书特色

本书共分14章,内容涵盖了从OpenGL ES 3.x着色器的使用技巧到高级光影效果以及物理模拟问题的解决。介绍了OpenGL ES 3.x中的各种缓冲区对象和顶点着色器与片元着色器的使用技巧,以及高级光影效果的实现,如凹凸映射、环境反射、阴影、倒影、镜头光晕等。介绍了杰出的3D物理引擎Bullet(Java和C版本),详细介绍了骨骼动画的开发,包括加载ms3d骨骼动画以及开发自定义格式的骨骼动画。系统地讨论了OpenGL ES 3.x开发中的性能优化问题,介绍了OpenGL ES 3.1新增的计算着色器。给出了基于NDK的大型游戏案例——火力篮球和iOS下的3D游戏案例——方块翻转,方便读者快速上手应用。本书适合游戏开发者、程序员阅读,也适合大专院校相关专业师生的学习用书,以及培训学校的教材。

OpenGL ES 3.x游戏开发-(下卷) 目录

目录
第1章缓冲区对象1
1.1顶点缓冲区1
1.1.1基本知识1
1.1.2一个简单的案例4
1.2顶点数组对象6
1.2.1基本知识与案例效果6
1.2.2案例开发步骤7
1.3一致缓冲区对象8
1.3.1基本知识与案例效果9
1.3.2案例开发步骤10
1.4映射缓冲区对象13
1.4.1基本知识与案例效果13目录
第1章缓冲区对象1
1.1顶点缓冲区1
1.1.1基本知识1
1.1.2一个简单的案例4
1.2顶点数组对象6
1.2.1基本知识与案例效果6
1.2.2案例开发步骤7
1.3一致缓冲区对象8
1.3.1基本知识与案例效果9
1.3.2案例开发步骤10
1.4映射缓冲区对象13
1.4.1基本知识与案例效果13
1.4.2案例开发步骤15
1.5其他缓冲区对象操作18
1.5.1复制缓冲区对象18
1.5.2从颜色缓冲区复制纹理数据18
1.6帧缓冲与渲染缓冲20
1.6.1帧缓冲与渲染缓冲对象20
1.6.2案例开发步骤23
1.7多重渲染目标26
1.7.1基本知识26
1.7.2一个简单的案例26
1.8小结29
第2章顶点着色器的妙用30
2.1飘扬的旗帜30
2.1.1基本原理30
2.1.2开发步骤31
2.2扭动的软糖33
2.2.1基本原理33
2.2.2开发步骤34
2.3风吹椰林场景的开发35
2.3.1椰子树随风摇摆的基本原理35
2.3.2开发步骤36
2.4展翅飞翔的雄鹰39
2.4.1基本原理39
2.4.2开发步骤40
2.5二维扭曲42
2.5.1基本原理42
2.5.2开发步骤43
2.6吹气膨胀特效45
2.6.1特效基本原理46
2.6.2特效开发步骤46
2.7固定渲染管线与可编程渲染管线实现方案的对比48
2.8小结49
第3章片元着色器的妙用50
3.1程序纹理技术50
3.1.1砖块着色器50
3.1.2沙滩球着色器52
3.2数字图像处理53
3.2.1卷积的基本知识53
3.2.2平滑过滤54
3.2.3边缘检测55
3.2.4锐化处理56
3.2.5浮雕效果56
3.2.6图像渐变58
3.2.7卡通渲染特效59
3.3分形着色器60
3.3.1曼德布罗集简介61
3.3.2曼德布罗集着色器的实现61
3.3.3将曼德布罗集纹理应用到实际物体上63
3.3.4茱莉亚集着色器的实现63
3.43D纹理的妙用65
3.4.1噪声函数的基础知识65
3.4.2柏林噪声函数生成工具68
3.4.33D噪声纹理木头茶壶的
开发69
3.5体积雾72
3.5.1基本原理72
3.5.2开发步骤73
3.6粒子系统火焰的开发75
3.6.1火焰的基本原理75
3.6.2普通版火焰77
3.6.3点精灵版火焰82
3.6.4变换反馈版火焰85
3.7小结89
第4章真实光学环境的模拟90
4.1反射环境模拟90
4.1.1案例效果与基本原理90
4.1.2反射环境开发步骤91
4.2折射环境模拟93
4.2.1案例效果与基本原理93
4.2.2开发步骤95
4.3色散效果的模拟96
4.3.1案例效果与基本原理96
4.3.2开发步骤97
4.4菲涅尔效果的模拟97
4.4.1案例效果与基本原理97
4.4.2菲涅尔效果开发步骤98
4.5凹凸映射99
4.5.1案例效果与基本原理99
4.5.2法向量纹理图的生成100
4.5.3切向量的计算103
4.5.4案例的开发105
4.5.5使用3ds Max制作法向量
纹理图109
4.6高真实感地形111
4.6.1基本思路111
4.6.2一个简单的案例112
4.7镜头光晕115
4.7.1基本原理115
4.7.2一个简单的案例116
4.8小结119
第5章阴影及高级光照120
5.1投影贴图120
5.1.1案例效果与基本原理120
5.1.2开发步骤121
5.2阴影的重要性123
5.3平面阴影125
5.3.1案例效果与基本原理125
5.3.2开发步骤126
5.4阴影映射129
5.4.1阴影映射案例效果与基本
原理129
5.4.2距离纹理图的生成130
5.4.3阴影场景的绘制135
5.5阴影贴图138
5.5.1案例效果与基本原理138
5.5.2开发步骤139
5.6静态光照贴图140
5.6.1案例效果与基本原理140
5.6.2使用3ds Max制作静态光照
贴图141
5.6.3案例的开发142
5.7聚光灯高级光源144
5.7.1案例效果与基本原理144
5.7.2案例的开发145
5.8半球光照146
5.8.1案例效果与基本原理146
5.8.2案例的开发148
5.9光线跟踪149
5.9.1光线跟踪案例效果与基本
原理149
5.9.2光线跟踪开发步骤153
5.10高级镜像技术162
5.10.1案例效果与基本原理162
5.10.2开发步骤163
5.11高真实感水面倒影168
5.11.1案例效果与基本原理168
5.11.2开发步骤170
5.12运动模糊175
5.12.1普通运动模糊176
5.12.2高级运动模糊179
5.13小结183
第6章游戏开发中的物理学184
6.1碰撞检测基本技术184
6.1.1AABB包围盒的基本原理184
6.1.2AABB包围盒的计算185
6.1.3AABB包围盒的碰撞检测186
6.1.4一个AABB包围盒的案例188
6.1.5旋转后的AABB包围盒189
6.1.6AABB包围盒的使用要点193
6.1.7OBB包围盒193
6.2穿透效应194
6.2.1案例的运行效果与基本
原理194
6.2.2具体开发步骤195
6.3粒子系统195
6.3.1案例运行效果与基本原理195
6.3.2CPU版案例的开发196
6.3.3GPU版案例开发步骤197
6.4弹簧质点模型模拟旗帜199
6.4.1弹簧质点模型基本原理199
6.4.2弹簧质点模型案例的运行效果及开发步骤200
6.5弹簧质点模型模拟球网208
6.5.1弹簧质点模型的基本原理209
6.5.2弹簧质点模型的案例的运行效果及开发步骤209
6.6小结211
第7章3D物理引擎一——JBullet212
7.1物理引擎很重要212
7.1.1什么是物理引擎212
7.1.2常见的物理引擎212
7.2JBullet物理引擎概览214
7.2.1基本的物理学概念215
7.2.2JBullet中常用类的介绍216
7.3箱子相互碰撞的案例223
7.3.1案例运行效果及准备工作223
7.3.2案例的基本框架结构224
7.3.3常量类——Constant225
7.3.43D场景渲染类——MySurfaceView225
7.3.5水平地面——TexFloor类227
7.3.6箱子——TexCube类228
7.4复合碰撞形状的使用229
7.4.1案例运行效果229
7.4.2立方体圆柱复合形状——CubeCylinder类229
7.5凹凸地形的案例231
7.5.1案例运行效果231
7.5.2地形类——LandForm232
7.6任意形状物体的碰撞233
7.6.1案例运行效果233
7.6.2加载物体类——LoadedObject VertexNormal233
7.6.3加载物体刚体类——LoadRigidBody234
7.7铰链关节235
7.7.1铰链关节的基本知识235
7.7.2铰链关节案例的运行效果236
7.7.3铰链关节旋转角速度的计算237
7.7.43D界面渲染类——MySurfaceView238
7.8滑动关节240
7.8.1滑动关节的基本知识240
7.8.2案例效果图241
7.8.33D界面渲染类——MySurfaceView241
7.9六自由度关节244
7.9.1六自由度关节的基本知识244
7.9.2六自由度关节案例的运行
效果245
7.9.3人偶类——Doll246
7.9.4拾取时采用的点对点关节247
7.10交通工具250
7.10.1交通工具开发要点250
7.10.2交通工具案例的运行
效果251
7.10.33D场景渲染类——
MySurfaceView251
7.10.4汽车类——Car253
7.10.5汽车绘制类——
VehicleDraw257
7.11小结258
第8章3D物理引擎二——Bullet259
8.1Bullet中的常用类和结构体259
8.1.1btScalar类——被封装的
浮点类259
8.1.2btVector3类——三维向量类259
8.1.3btTransform类——变换类261
8.1.4btRigidBody类——刚体类262
8.1.5btDynamicsWorld类——物理世界类263
8.1.6btDiscreteDynamicsWorld类——
离散物理世界类264
8.1.7btSoftRigidDynamicsWorld类——支持模拟软体的物理
世界类264
8.1.8btCollisionShape类——碰撞形状类265
8.1.9btStaticPlaneShape类——静态平面形状265
8.1.10btSphereShape类——球体形
状类266
8.1.11btBoxShape类——长方体盒
碰撞形状类266
8.1.12btCylinderShape类——圆柱
形状类266
8.1.13btCapsuleShape类——胶囊
形状类266
8.1.14btConeShape类——圆锥形
状类267
8.1.15btCompoundShape类——复
合碰撞形状类267
8.2简单的物理场景267
8.2.1案例运行效果267
8.2.2案例的基本框架结构268
8.2.33D场景渲染类——GL2JNIView类269
8.2.4主控制类——HelloBulletActivity类271
8.2.5本地方法声明及动态库加载类——JNIPort类272
8.2.6封装的物体类——TexBody
类273
8.2.7矩形绘制类——TextrueRect
类273
8.2.8长方体物体类——TexCuboid
类276
8.2.9水平地面类——TexPlane类278
8.2.10初始化及渲染函数文件——
main.cpp279
8.3各式各样的物体下落281
8.3.1案例运行效果281
8.3.2圆锥物体类——TexCone类282
8.3.3球物体类——TexBall类284
8.3.4胶囊物体类——
TexCapsule类285
8.3.5圆柱物体类——TexCylinderShape类287
8.3.6初始化及渲染函数文件——main.cpp289
8.4旋转的陀螺290
8.4.1案例运行效果290
8.4.2陀螺物体类——MyCompoundShape类290
8.4.3初始化及渲染函数文件——main.cpp292
8.5消失的木块292
8.5.1案例运行效果292
8.5.2初始化及渲染函数文件——main.cpp293
8.6物体碰撞下落295
8.6.1案例运行效果295
8.6.2初始化及渲染函数文件——main.cpp296
8.7关节297
8.7.1关节的父类——btTypedConstraint类297
8.7.2铰链关节——btHingeConstraint类297
8.7.3铰链关节的案例——球落
门开299
8.7.4齿轮关节——btGearConstraint类300
8.7.5齿轮关节的案例——转动的齿轮301
8.7.6点对点关节——btPoint2Point Constraint类302
8.7.7点对点关节的案例——悬挂的物体303
8.7.8滑动关节——btSliderConstraint类304
8.7.9滑动关节的案例——六个方向的物体滑动305
8.7.10六自由度关节——btGeneric6
DofConstraint类308
8.7.11六自由度关节的案例——掉
落的蜘蛛309
8.8三角形网格形状类311
8.8.1三角形索引数组类——btTriangle IndexVertexArray类311
8.8.2层次包围结构三角形网格形状类——btBvhTriangleMesh Shape类312
8.8.3层次包围结构三角形网格形状类的案例——波动的水纹313
8.9交通工具类316
8.9.1交通工具类——btRaycastVehicle类317
8.9.2交通工具的案例——移动的小车318
8.10固定三角形网格形状类324
8.10.1固定三角形网格形状类——
btGImpactMeshShape类324
8.10.2固定形状物体案例325
8.11软体327
8.11.1软体帮助类——btSoftBody
Helps类327
8.11.2软布案例328
8.11.3三角形网格软体案例331
8.11.4绳索软体案例334
8.12光线投射回调结构体336
8.12.1光线投射回调结构体
ClosestRayResultCallback336
8.12.2光线投射的案例——旋转
光线337
8.13小结339
第9章骨骼动画340
9.1自己开发骨骼动画340
9.1.1骨骼动画的基本原理340
9.1.2开发步骤343
9.1.3机器人模型在地面上运动时的问题348
9.2ms3d文件的加载351
9.2.1ms3d文件的格式351
9.2.2将3ds Max动画文件转换为ms3d文件355
9.2.3Java语言加载ms3d文件案例的开发359
9.2.4C语言加载ms3d文件案例的开发372
9.3自定义格式骨骼动画的加载373
9.3.1bnggdh文件的格式373
9.3.2Bnggdh类376
9.3.3加载bnggdh文件的案例377
9.4小结379
第10章必知必会的开发技术—— 游戏开发小贴士380
10.13D拾取技术380
10.1.13D拾取案例效果与基本
原理380
10.1.2开发步骤382
10.2多点触控386
10.2.1多点触控案例效果与基本
原理386
10.2.2开发步骤387
10.3多键监听389
10.3.1案例效果与基本原理389
10.3.2开发步骤390
10.4小结392
第11章让应用运行更流畅——
性能优化393
11.1着色器的优化393
11.1.1计算量与计算频率相关的
问题393
11.1.2其他需要注意的问题394
11.2纹理图的优化395
11.33D图形绘制的优化396
11.3.1CPU阶段的优化396
11.3.2几何阶段的优化397
11.3.3光栅化阶段的优化398
11.3.4使用帧缓冲区对象时的性能
问题398
11.3.5尽量减少状态的变化399
11.4图元重启399
11.4.1基本原理399
11.4.2一个简单的案例400
11.5几何体实例渲染401
11.5.1基本原理401
11.5.2一个简单的案例402
11.5.3基于实例渲染的海量草地403
11.6着色器程序的外部加载406
11.7计算着色器的使用409
11.7.1基本知识409
11.7.2动态法向量光照水面
案例413
11.8小结418
第12章杂项419
12.1遮挡查询419
12.1.1相关方法419
12.1.2案例开发步骤420
12.2增强现实基础422
12.2.1基本知识与案例效果422
12.2.2一个简单的案例423
12.3保存屏幕图像426
12.4读取Android系统的GPU参数428
12.5多重采样抗锯齿429
12.5.1基本知识与案例效果429
12.5.2一个简单的案例430
12.6小结431
第13章Android NDK体育竞技
游戏——火力篮球432
13.1游戏背景及功能简述432
13.1.1背景概述432
13.1.2功能介绍432
13.2游戏的策划及准备工作434
13.2.1游戏的策划434
13.2.2Android平台下游戏开发的
准备工作435
13.3游戏的架构436
13.3.1各个类简要介绍436
13.3.2游戏的框架简介438
13.4游戏公共类439
13.4.1游戏入口类——BasketBullet Activity439
13.4.2场景渲染类——
GL2JNIView440
13.4.3本地方法声明及动态库加载
类——JNIPort442
13.4.4现实本地方法的相关文件
——jni_code.c443
13.4.5现实本地方法的相关文件
——main.cpp443
13.5辅助界面相关类446
13.5.1着色器管理类——ShaderManager446
13.5.2着色器脚本的开发448
13.5.3数据库工具类——
SQLiteUtil452
13.5.4纹理矩形类——
TextureRect454
13.5.5游戏资源加载界面类——LoadingView456
13.5.6菜单界面类——MenuView458
13.5.7记录界面类——
RecordView460
13.6游戏界面相关类462
13.6.1游戏界面类——
GameView462
13.6.2墙面刚体封装类——
TexCuboid467
13.6.3篮球刚体封装类——
TexBall468
13.6.4任何形状类——
AnyShapeByVectices470
13.6.5任何形状刚体封装类——
TexTriangleMesh473
13.6.6任何形状软体封装类——
SoftObj474
13.7游戏的优化及改进476
第14章iOS休闲类游戏——方块翻转477
14.1游戏背景及功能概述477
14.1.1游戏背景概述477
14.1.2游戏功能介绍477
14.2游戏的策划及准备工作480
14.2.1游戏的策划480
14.2.2手机平台下游戏的准备
工作480
14.3游戏的架构482
14.3.1各个类简要介绍482
14.3.2游戏框架简介484
14.4界面显示类485
14.4.1GLView类485
14.4.2显示界面类RenderingEngine2486
14.4.3游戏界面类GameView488
14.4.4帮助界面类HelpView491
14.5辅助工具类493
14.5.1常量类Constant493
14.5.2计算交点坐标辅助类
IntersectantUtil494
14.6绘制相关类495
14.6.13D模型绘制类的开发495
14.6.22D物体绘制类的开发500
14.7游戏的优化及改进501
14.8小结502
信息

OpenGL ES 3.x游戏开发-(下卷) 作者简介

吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为OpenGL ES、手机游戏、Java EE以及搜索引擎。同时为手机游戏、Java EE独立软件开发工程师,并兼任百纳科技Java培训中心首席培训师。近十年来为数十家杰出企业培养了上千名高级软件开发人员,曾编写过《Android 3D游戏案例开发大全》、《Android平板电脑开发实战详解和典型案例》、《Android游戏开发大全》、《Android应用案例开发大全》、《Unity 3D游戏开发技术详解与典型案例》等多本畅销技术书籍。2008年年初开始关注Android平台下的应用开发,并开发出一系列杰出的Android 3D应用程序与游戏。

相关推荐

微信二维码