基本信息
- 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Graphics Programming
- 原出版社: Addison-Wesley Professional

编辑推荐
资深iOS开发专家根据OpenGL ES最新版本撰写,详细讲解了OpenGL ES与GLKit的结合使用
系统讲解OpenGL ES的核心概念、技术,以及iOS的图形机制,通过大量案例讲解了在iOS上进行OpenGL ES开发的方法和技巧
内容简介
计算机书籍
《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章涵盖了一个结合地形渲染、天空盒、粒子系统、动画、变化视点、灯光、模型和碰撞检测技术的实例。
作译者
目录
译者序
前言
第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
译者序
本书从基本概念开始,全面介绍了OpenGL ES计算机图形的核心概念以及iOS的图形机制,包括地形、特效、模型、动画、视点变化、纹理、灯光和优化等。本书例子丰富有趣,一般每章都有多个例子,并且源码结构合理,注释全面。本书会告诉你如何在苹果公司的iOS环境中充分地利用好OpenGL ES。本书专注于最新版OpenGL ES的最新使用方法,因此可以让你避开散落在互联网上的不相关的、过时的,或者误导性的方法。本书的第11章为数学速查章节,非常方便,如果你是计算机图形的新手,可以先阅读这一章以帮助你更好地理解本书的内容。如果你熟悉桌面版OpenGL,但是不了解OpenGL ES以及GLKit,那么这本书也非常适合你。
本书的翻译经历了3个月,非常感谢华章公司的编辑们在翻译过程中给予我的支持和帮助。对于译者来说,能够给读者带来切实的帮助是我最大的荣幸。虽然在翻译的过程中竭力以信、达、雅为目标,但是由于水平有限,失误和遗漏在所难免,恳请读者批评指正。
译者
前言
本书介绍了最新图形编程,同时对iOS设备中OpenGL ES的有效使用做了简洁说明。书中有很多用于演示图形编程概念的例子程序。在网站http://opengles.cosmicthump.com/上保存着很多例子和相关文章。本书对于从底层位操作到高级主题的图形技术都做了详细的解释。
学习图形编程的重大挑战体现在当你第一次试图整理散落在互联网上的成堆的误导性信息和过时的例子时。最初OpenGL是1992年的最先进图形工作站中的一个小型软件库。由于图形硬件改进得频繁且更新较快,以至于现在的移动设备已经胜过OpenGL刚出现时能够买到的最好的硬件。随着硬件技术的提高,OpenGL设计者当时所做的一些折中方法和假设已不再有意义了。现在至少存在着12种不同的OpenGL标准,不过最新的OpenGL ES省略了很多对于以前版本中的常见技术的支持。不幸的是,在谷歌的搜索结果中还存在相当多的过时的代码和次优方案,以及几十年来形成的过时的经验。本书将主要关注最新、最高效的方法,以避免分心于过时且不相干的练习上。
读者对象
本书的读者包括学习编程的学生以及精通其他学科又想要学习图形的程序员。读者不需要有计算机图形的经验,但需要熟悉C或者C++以及面向对象编程的概念。有iOS、Objective-C编程语言和Cocoa Touch框架的使用经验是最好的,但不是必需的。在学完本书后,你将有能力在你自己的iOS应用中使用高级计算机图形技术。
示例代码
本书提供的很多例子可以用作你自己的工程的起始点。可以从http://opengles.cosmicthump.com/learning-opengl-es-sample-code/下载本书例子的源代码,这些源码使用MIT软件许可协议:http://www.opensource.org/licenses/mit-license.html。
这些例子是使用苹果的免费开发者工具建立的,用的是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的最好做法,同时如果你需要,甚至可以将其作为你自己的跨平台库的一个模板。
致谢