Open GL ES应用开发实践指南

出版时间:2013-6-19  出版社:机械工业出版社  作者:Erik M.Buck  译者:徐学磊  
Tag标签:无  

前言

前言OpenGL ES技术是苹果iOS设备(iPhone、iPod Touch以及iPad)上的用户界面和图形绘制能力的基础。“ES”代表嵌入式系统(Embedded System),这个术语适用于视频游戏机、飞机驾驶员座舱显示器,并且广泛适用于几乎所有生产商的手机。OpenGL ES是桌面操作系统OpenGL版本的一个子集。因此,OpenGL ES应用通常也适用于桌面系统。本书介绍了最新图形编程,同时对iOS设备中OpenGL ES的有效使用做了简洁说明。书中有很多用于演示图形编程概念的例子程序。本书对于从底层位操作到高级主题的图形技术都做了详细的解释。学习图形编程的重大挑战体现在当你第一次试图整理散落在互联网上的成堆的误导性信息和过时的例子时。最初OpenGL是1992年的最先进图形工作站中的一个小型软件库。由于图形硬件改进得频繁且更新较快,以至于现在的移动设备已经胜过OpenGL刚出现时能够买到的最好的硬件。随着硬件技术的提高,OpenGL设计者当时所做的一些折中方法和假设已不再有意义了。现在至少存在着12种不同的OpenGL标准,不过最新的OpenGL ES省略了很多对于以前版本中的常见技术的支持。不幸的是,在谷歌的搜索结果中还存在相当多的过时的代码和次优方案,以及几十年来形成的过时的经验。本书将主要关注最新、最高效的方法,以避免分心于过时且不相干的练习上。读者对象本书的读者包括学习编程的学生以及精通其他学科又想要学习图形的程序员。读者不需要有计算机图形的经验,但需要熟悉C或者C++以及面向对象编程的概念。有iOS、Objective-C编程语言和Cocoa Touch框架的使用经验是最好的,但不是必需的。在学完本书后,你将有能力在你自己的iOS应用中使用高级计算机图形技术。示例代码本书提供的很多例子可以用作你自己的工程的起始点。这些例子是使用苹果的免费开发者工具建立的,用的是Objective-C编程语言,以及苹果的Cocoa Touch面向对象的软件框架。OpenGL ES应用程序编程接口(API)由美国国家标准协会(ANSI)/国际标准化组织(ISO) C 编程语言的数据类型和函数组成。作为ANSI/ISO C的一个超集,Objective-C程序原生地支持与OpenGL ES交互。所有iOS应用都或多或少地依赖于Cocoa Touch框架,该框架是基于苹果的Objective-C语言的。一些开发者通过重用现存的用C或者C++写就的跨平台库来最小化自己的应用与Cocoa Touch的融合。作为UNIX操作系统的一个派生物,iOS包含了标准C库和UNIX API,这使得移植跨平台代码到苹果设备上变得出人意料的简单。OpenGL ES自身的一部分也是由跨平台C库组成的。尽管如此,不想使用Cocoa Touch和Objective-C的开发者几乎总是给自己帮倒忙。苹果面向对象的框架史无前例地提升了程序员的生产率。更重要的是,Cocoa Touch提供了用户对iOS应用所期望的平台一体性和精良性。本书包含了Objective-C和Cocoa Touch。苹果的基于Objective-C的GLKit框架的强大和简洁是如此令人信服,以至于它明确地指出了图形编程的未来发展方向。如果不使用GLKit而只关注操作系统的底层C接口和OpenGL ES,本书几乎无法声称自己教授的是最新技术。Objective-C与ANSI/ISO C一样,Objective-C是一个非常小型的语言。有经验的C程序员通常会发现,他们可以在至多几个小时内很容易地学会Objective-C。Objective-C在开启了一个富有表现力的面向对象的编程风格的同时,最低限度地扩充了C语言。本书详述了图形编程,同时在需要的时候会对Objective-C语言的特性做适当的介绍。你并不需要精通Objective-C或者Cocoa Touch,但是你需要熟悉C或者C++以及面向对象编程的概念。你会发现使用Objective-C语言实现应用逻辑是非常容易和简洁的。Cocoa Touch经常简化应用的设计,尤其是在响应用户输入的时候。C++ANSI/ISO C++编程语言是ANSI/ISO C的一个不是很完美的超集,但它几乎总是可以自由地与C语言混合。OpenGL ES与C++可以无缝配合,并且OpenGL结构审查委员会(ARB)会监督OpenGL ES的规范,以保证其未来与C++的兼容性。C++编程语言是用于图形编程的最常见的编程语言之一。但是,C++是一个非常大型的编程语言,充满了惯用语法和精妙法则。对于C++语言要达到中等掌握水平可能要花费数年的时间。使用C++做图形编程有许多优势,例如,使用C++操作符重载功能可以让图形程序中数学运算的表达更加简洁。混合使用C++与Objective-C代码并没有任何障碍。苹果开发者工具甚至支持Objective-C++形式,这种形式允许在一个语句中混合使用C++和Objective-C代码。但是Objective-C是iOS的主要编程语言。在苹果和第三方提供的几乎所有iOS示例代码中你都可以发现Objective-C的代码。如果你想使用C++也是可以的,但这超出了本书讨论的范围。使用GLKit作为导向本书通过对苹果GLKit的探索来讲解图形编程的最新概念。在一些情况下,某些章节会通过实现GLKit的部分对象来讲解和演示这些概念。这样做有几个目的:使用GLKit来简化启动项目所需的步骤。在第2章末尾你会建立起3个OpenGL ES应用,并在你的iOS设备上运行。一章接着一章,逐渐创建彼此关联的很多主题,最终创建一个可重用的知识和代码的基础结构。当付出努力以从零开始创建时,可以帮助你获取一个想要的最终结果的清晰概念。为了获得有价值的最终结果,GLKit设置了一个高质量的现代基准。本书会消除你关于怎么使用OpenGL ES来实现和扩展GLKit的所有疑云。学完本书后,你会成为一个GLKit专家,彻底理解GLKit,同时拥有在你的iOS应用中使用GLKit的能力。GLKit演示了当前对于OpenGL ES的最好做法,同时如果你需要,甚至可以将其作为你自己的跨平台库的一个模板。致谢写一本书需要很多人的支持。首先,感谢我的妻子Michelle,以及我的孩子Joshua、Emma和Jacob,谢谢你们的理解和支持。其次,感谢出版社的编辑们,他们为本书的写作提供了非常宝贵的建议。最后,感谢那些在学术上、专业上、精神上、道德上和艺术上将影响我一生的人。

内容概要

《opengl es应用开发实践指南:ios卷》是一本系统的具备实战性的opengl es 3d图形开发指南。由资深ios开发专家根据opengl es最新版本撰写,不仅详细讲解了opengl es与glkit的结合使用,而且还系统讲解opengl es的核心概念、技术,以及ios的图形机制,并通过大量案例讲解了在ios上进行opengl es开发的方法和技巧。
全书共分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章涵盖了一个结合地形渲染、天空盒、粒子系统、动画、变化视点、灯光、模型和碰撞检测技术的实例。

作者简介

作者:(美国)Erik M.Buck 译者:徐学磊Erik M.Buck,资深iOS应用和苹果应用开发专家,与人合著了《Cocoa Programming》和《Cocoa Design Patterns》等经典著作。1993年创建了他的第一家公司——EMB,这家公司后来发展成了航空航天软件和娱乐软件产业的领导者。Buck还在建筑行业工作过,当过理科8年级的老师,开过帆布油画肖像展,开发过替代燃料交通工具。他还是莱特州立大学计算机科学系的助理教授,当前教的课程是iOS编程。

书籍目录

译者序前言第1章使用现代移动图形硬件 11.13D渲染 11.2 为图形处理器提供数据 31.2.1 缓存:提供数据的最好方式 41.2.2 帧缓存 51.3 OpenGL ES的上下文 61.4 一个3D场景的几何数据 71.4.1 坐标系 71.4.2矢量 91.4.3点、线、三角形 111.5小结 11第2章让硬件为你工作 122.1使用OpenGL ES绘制一个Core Animation层 122.2结合Cocoa Touch和OpenGL ES 142.2.1Cocoa Touch 142.2.2使用苹果开发者工具 152.2.3Cocoa Touch应用架构 152.3OpenGLES_Ch2_1示例 182.3.1OpenGLES_Ch2_1AppDelegate类 182.3.2Storyboards 192.3.3OpenGLES_Ch2_1ViewController类的interface 192.3.4OpenGLES_Ch2_1ViewController类的实现 202.3.5支持文件 302.4深入探讨GLKView是怎么工作的 312.5对于GLKit的推断 402.6小结 46第3章纹理 483.1 什么是纹理 483.1.1对齐纹理和几何图形 493.1.2纹理的取样模式 503.1.3MIP 贴图 523.2OpenGLES_Ch3_1示例 523.3深入探讨GLKTextureLoader是怎么工作的 563.4OpenGLES_Ch3_3示例 623.5透明度、混合和多重纹理 633.5.1在OpenGLES_Ch3_4示例中混合片元颜色 643.5.2 示例OpenGLES_Ch3_5中的多重纹理 663.5.3在OpenGLES_Ch3_6示例中自定义纹理 683.6纹理压缩 703.7小结 71第4章散发一些光线 724.1环境光、漫反射光、镜面反射光 734.2计算有多少光线照向每个三角形 744.3使用GLKit灯光 794.4 OpenGLES_Ch4_1示例 804.5把灯光烘焙进纹理中 864.6片元计算 874.7小结 88第5章改变你的视点 895.1深度渲染缓存(Depth Render Buffer) 895.2例子OpenGLES_Ch5_1和例子OpenGLES_Ch5_2 915.3深入探讨不用GLKit添加深度缓存 965.4变换 985.4.1基本变换 985.4.2顺序很重要 1015.4.3projectionMatrix和modelviewMatrix 1025.4.4textureMatrix 1055.5复合变换手册 1075.5.1倾斜 1075.5.2围着一个点旋转 1075.5.3围着一个点缩放 1075.6透视和平截头体 1085.7小结 109第6章动画 1106.1场景内移动:例子OpenGLES_Ch6_1 1116.1.1看向一个特定的3D位置 1116.1.2使用时间 1136.2动画化顶点数据 1166.2.1使用索引顶点 1186.2.2OpenGLES_Ch6_2示例 1196.3动画化颜色和灯光:例子OpenGLES_Ch6_3 1226.4动画化纹理 1266.4.1OpenGLES_Ch6_4示例 1266.4.2OpenGLES_Ch6_5示例 1286.5小结 130第7章加载和使用模型 1317.1建模工具和格式 1327.2读取modelplist文件 1367.3OpenGLES_Ch7_1示例 1387.4高级模型 1427.4.1骨骼动画 1427.4.2蒙皮 1477.4.3 逆动力学和物理模拟 1507.5小结 150第8章特效 1518.1天空盒 1518.2深入探讨GLKSkyboxEffect是怎么工作的 1548.3 粒子 1648.4公告牌 1708.5小结 177第9章优化 1789.1尽可能减少渲染 1789.1.1基于视平截体的剔除 1799.1.2简化 1899.2不要猜:解析(Profile) 1899.2.1工具OpenGL ES Performance Detective 1909.2.2工具Instruments 1919.3尽量减少缓存复制 1929.4尽量减少状态变化 1929.5小结 193第10章地形和拾取 19510.1地形的实现 19510.1.1高度图 19610.1.2地形瓦片 19710.1.3地形效果 20010.2添加模型 20510.2.1模型放置 20610.2.2模型效果 20610.3OpenGL ES摄像机 20810.4拾取 21310.5优化 22110.6小结 228第11章数学速查 22911.1概述 22911.2解码矩阵 23011.2.1从平截体获取矩阵 23311.2.2透视 23611.2.3矢量的坐标轴分量 23711.2.4点变换 23811.2.5 转置矩阵和逆矩阵 24011.3四元法 24111.4常用的图形数学 24211.4.1简单矢量运算 24211.4.2矢量标量积 24311.4.3矢量的矢量积 24311.4.4model-view矩阵 24411.4.5投影矩阵 24511.5小结 245第12章理清整体思路 24612.1概述 24612.2一切如故 24812.2.1控制器子系统 24912.2.2模型子系统 25012.2.3 视图子系统 25512.3设备动作 26312.4小结 265

编辑推荐

《OpenGL ES应用开发实践指南:iOS卷》编辑推荐:资深iOS开发专家根据OpenGL ES最新版本撰写,详细讲解了OpenGL ES与GLKit的结合使用。书中系统讲解OpenGL ES的核心概念、技术,以及iOS的图形机制,通过大量案例讲解了在iOS上进行OpenGL ES开发的方法和技巧。

图书封面

图书标签Tags

评论、评分、阅读与下载


    Open GL ES应用开发实践指南 PDF格式下载


用户评论 (总计3条)

 
 

  •   有点难度,不是很容易懂
  •   都是讲解用的ios封装的glkit进行opengles绘制,想跨平台的就不要考虑了
  •   内容一般般了印刷质量一般
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7