首页>参考读物>计算机科学与技术>综合

OpenGL ES 3.0编程指南(原书第2版)
作者 : (美)Dan Ginsburg Budirijanto Purnomo 等著
译者 : 姚军 等译
丛书名 : 华章程序员书库
出版日期 : 2015-02-12
ISBN : 978-7-111-48915-3
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 379
开本 : 16
原书名 : OpenGL ES 3.0 Programming Guide
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

对于在手持设备和嵌入式设备上渲染复杂的3D图形来说,OpenGL ES是行业内领先的软件接口和图形库。本书包括所有API和渲染语言,并完整地介绍了OpenGL ES的所有特性,如阴影映射、实例化、多级渲染目标、统一缓存对象、纹理压缩等内容。

图书特色

作为一名图形技术人员和认真的OpenGL ES开发人员,我真心诚意地认为,如果你只购买一本有关OpenGL ES 3.0编程的书籍,那么就应该是买这本书。Dan和 Budirijanto的这本书很明显是程序员写给程序员的书,任何对OpenGL ES 3.0感兴趣的人都有必要阅读它。你会发现在编程过程中,你将会一次又一次地打开本书,而不是阅读OpenGL ES 的规范。我极力推荐你阅读它!
—— Rick Tewell,Freescale图形技术架构师

本书用清晰、全面的解释和大量示例,介绍了OpenGL ES的最新版本,任何开发移动应用的人的桌面上都应该有它。
—— Dave Astle,高通公司图形工具主管,GameDev.net创始人


OpenGL ES是行业领先的软件接口和图形库,用于在手持设备和嵌入式设备上渲染复杂的3D图形。它的最新版本OpenGL ES 3.0能够为新型游戏和应用创建绝妙的视觉效果,而无须牺牲设备性能或者电池寿命。
在本书中,作者全面介绍了OpenGL ES API和着色语言,包括OpenGL ES 3.0的各种功能,如阴影贴图、实例化、多重渲染目标、统一缓冲区对象、纹理压缩、程序二进制码和变换反馈等。
通过详尽的可下载的C代码示例,大家能够学到图形管线各个方面的设置和编程方法,并能循序渐进地学习从入门技术到高级的逐像素照明及粒子系统。自始至终,你都能找到优化性能、最大化API和硬件效率,以及在广泛的应用程序中充分利用OpenGL ES 3.0的实用技巧。
所有代码都在iOS 7、Andriod 4.3、Windows(OpenGL ES 3.0仿真)和Ubuntu Linux上编译和测试过,书中还阐述了各种平台上的构建方法。

作者简介
Dan Ginsburg  Upsample Software公司创始人,该软件公司提供3D图形和GPU计算的咨询服务。Dan参与撰写了多部著作,包括《OpenCL 编程指南》和《OpenGL Shading Language,3rd Edition》。在过去的工作中,Dan曾经开发过OpenGL驱动程序、桌面和手持3D演示、GPU开发人员工具、3D医学显示和游戏。
Budirijanto Purnomo  AMD公司高级软件架构师,领导跨越多个AMD软件栈的GPU调试和剖析技术的软件实现工作。他与AMD的多位软件和硬件架构师协作,定义用于调试和剖析GPU应用的未来硬件架构。他曾在国际会议上发表过许多与计算机图形技术相关的论文。
Aaftab Munshi  目前就职于Apple公司,之前曾是AMD手持设备部的高级架构师。他有10余年GPU架构从业经验,并且是OpenGL ES 1.1、OpenGL ES 2.0和OpenCL规范的编辑。
Dave Shreiner  ARM公司图形与GPU计算部门主管,自OpenGL诞生之日起就积极地参与到它的开发当中。他创建了OpenGL的第一个商业培训课程,并且拥有超过20年的OpenGL编程教学经验。

内容简介
本书由资深OpenGL技术专家亲笔撰写,全面介绍OpenGL ES 3.0的各种特性及新增功能, 通过大量已经编译和测试过的实例,详细讲解OpenGL ES 3.0中的应用程序接口(API)和图形管线,既涵盖简单图形的渲染方法,又深入介绍逐像素照明和粒子系统等高级渲染技术,并且包含大量有效使用API和硬件的实用技巧,为手持设备的各种高性能3D应用开发提供翔实指导。
本书共16章:第1章简单介绍OpenGL ES ,并概述OpenGL ES 3.0图形管线;第2章通过绘制一个三角形的简单OpenGL ES 3.0示例程序,讲解一些API概念,并说明如何构建和运行OpenGL ES示例程序;第3章讲述为OpenGL ES 3.0创建表面和渲染上下文的API——EGL;第4章讨论创建着色器对象、编译着色器和检查编译错误的方法;第5章讲解编写着色器所需的着色语言基本知识;第6章详细介绍几何形状输入图形管线的方法,包含对顶点属性、顶点数组和缓冲区对象的讨论;第7章讨论几何形状如何装配成图元,介绍OpenGL ES 3.0中所有可用图元类型,包括点精灵、直线、三角形、三角形条带和三角扇形;第8章概述顶点着色器如何融入管线,以及OpenGL ES 着色语言中可用于顶点着色器的特殊变量;第9章和第10章介绍片段着色器,包括多重纹理、雾化、Alpha测试和用户裁剪平面等;第11章讨论片段操作,包括剪裁测试、模板测试、深度测试、多重采样、混合和抖动;第12章介绍使用帧缓冲区对象渲染屏幕外表面;第13章讨论同步对象和栅栏的使用方法;第14章介绍OpenGL ES 3.0高级编程,包含使用法线贴图的逐像素照明、环境贴图、粒子系统、图像后处理、程序纹理、阴影贴图、地形渲染和投影纹理等渲染技术;第15章提供OpenGL ES 3.0中各种可用状态查询的参考;第16章讨论如何为iOS 7、Android 4.3 NDK、Android 4.3 SDK、Windows和Linux构建OpenGL ES样板代码。

图书前言

OpenGL ES 3.0是在手持设备和嵌入式设备上渲染复杂3D图形的软件接口。OpenGL ES是具有可编程3D硬件的手持和嵌入式设备(包括手机、个人数字助理(PDA)、控制台、家用设备、车辆和航空电子设备)的主要图形程序库。本书详细地介绍了整个OpenGL ES 3.0应用程序编程接口(API)和管线,并包含详细的例子,为手持设备的各种高性能3D应用的开发提供指导。
目标读者
本书是为对学习OpenGL ES 3.0感兴趣的开发人员所写的,我们希望读者在计算机图形学领域有一定的基础。在正文部分我们解释了许多相关的图形学概念,因为它们与OpenGL ES 3.0的各个部分有关,但是我们期望读者理解基本的3D概念。本书中的代码示例都以C语言编写。我们假定读者熟悉C或者C++,并且只介绍与OpenGL ES 3.0相关的语言主题。
读者将学到有关图形管线各个方面的设置和编程的知识。本书详细介绍了如何编写顶点和片段着色器,以及如何实现逐像素照明和粒子系统等高级渲染技术。此外,书中还提供性能提示以及有效使用API和硬件的技巧。
完成本书的学习之后,读者就能为编写充分利用嵌入式图形硬件可编程能力的OpenGL ES 3.0应用做好准备。
本书的组织结构
本书将顺序介绍API,帮助你逐步形成对OpenGL ES 3.0的认识。
第1章——OpenGL ES 3.0简介
第1章简单介绍OpenGL ES,概述了OpenGL ES 3.0图形管线,讨论了OpenGL ES 3.0的设计理念和限制,最后介绍了OpenGL ES 3.0中使用的一些约定和类型。
第2章——你好,三角形:一个OpenGL ES 3.0示例
第2章介绍绘制三角形的一个简单OpenGL ES 3.0示例。我们的目的是说明OpenGL ES 3.0程序的样子,向读者介绍一些API概念,并说明如何构建和运行OpenGL ES 3.0示例程序。
第3章——EGL简介
第3章介绍EGL——为OpenGL ES 3.0创建表面和渲染上下文的API。我们说明与原生窗口系统通信、选择配置和创建EGL渲染上下文及表面的方法,传授足够多的EGL知识,你可以了解到启动OpenGL ES 3.0进行渲染所需的所有知识。
第4章——着色器和程序
着色器对象和程序对象是OpenGL ES 3.0中最基本的对象。第4章介绍创建着色器对象、编译着色器和检查编译错误的方法。这一章还说明如何创建程序对象、将着色器对象连接到程序对象以及链接最终程序对象的方法。我们讨论如何查询程序对象的信息以及加载统一变量(uniform)的方法。此外,你将学习有关源着色器和程序二进制代码之间的差别以及它们的使用方法。
第5章——OpenGL ES着色语言
第5章介绍编写着色器所需的着色语言的基础知识。这些着色语言基础知识包括变量和类型、构造器、结构、数组、统一变量、统一变量块(uniform block)和输入/输出变量。该章还描述着色语言的某些更细微的部分,例如精度限定符和不变性。
第6章——顶点属性、顶点数组和缓冲区对象
从第6章开始(到第11章为止),我们将详细介绍管线,教授设置和编程图形管线各个部分的方法。这一旅程从介绍几何形状输入图形管线的方法开始,包含了对顶点属性、顶点数组和缓冲区对象的讨论。
第7章——图元装配和光栅化
在前一章讨论几何形状输入图形管线的方法之后,第7章将讨论几何形状如何装配成图元,介绍OpenGL ES 3.0中所有可用的图元类型,包括点精灵、直线、三角形、三角形条带和三角扇形。此外,我们还说明了在顶点上进行坐标变换的方法,并简单介绍了OpenGL ES 3.0管线的光栅化阶段。
第8章——顶点着色器
我们所介绍的管线的下一部分是顶点着色器。第8章概述了顶点着色器如何融入管线以及OpenGL ES 着色语言中可用于顶点着色器的特殊变量,介绍了多个顶点着色器的示例,包括逐像素照明和蒙皮(skinning)。我们还给出了用顶点着色器实现OpenGL ES 1.0(和1.1)固定功能管线的示例。
第9章——纹理
第9章开始介绍片段着色器,描述OpenGL ES 3.0中所有可用的纹理功能。该章提供了创建纹理、加载纹理数据以及纹理渲染的细节,描述了纹理包装模式、纹理过滤、纹理格式、压缩纹理、采样器对象、不可变纹理、像素解包缓冲区对象和Mip贴图。该章介绍了OpenGL ES 3.0支持的所有纹理类型:2D纹理、立方图、2D纹理数组和3D纹理。
第10章——片段着色器
第9章的重点是如何在片段着色器中使用纹理,第10章介绍编写片段着色器所需知道的其他知识。该章概述了片段着色器和所有可用的特殊内建变量,还演示了用片段着色器实现OpenGL ES 1.1中所有固定功能技术的方法。多重纹理、雾化、Alpha测试和用户裁剪平面的例子都使用片段着色器实现。
第11章——片段操作
第11章讨论可以适用于整个帧缓冲区或者在OpenGL ES 3.0片段管线中执行片段着色器后适用于单个片段的操作。这些操作包括剪裁测试、模板测试、深度测试、多重采样、混合和抖动。本章介绍OpenGL ES 3.0图形管线的最后阶段。
第12章——帧缓冲区对象
第12章讨论使用帧缓冲区对象渲染屏幕外表面。帧缓冲区对象有多种用法,最常见的是渲染到一个纹理。本章提供API帧缓冲区对象部分的完整概述。理解帧缓冲区对象对于实现许多高级特效(如反射、阴影贴图和后处理)至关重要。
第13章——同步对象和栅栏
第13章概述同步对象和栅栏,它们是在OpenGL ES 3.0主机应用和GPU执行中同步的有效图元。我们讨论同步对象和栅栏的使用方法,并以一个示例作为结束。
第14章——OpenGL ES 3.0高级编程
第14章是核心章节,将本书介绍的许多主题串联在一起。我们已经选择了高级渲染技术的一个样本,并展示了实现这些功能的示例。该章包含使用法线贴图的逐像素照明、环境贴图、粒子系统、图像后处理、程序纹理、阴影贴图、地形渲染和投影纹理等渲染技术。
第15章——状态查询
OpenGL ES 3.0中有大量的状态查询。对于你的几乎任何设置,都有获取当前值的对应方法。第15章提供了OpenGL ES 3.0中各种可用状态查询的参考。
第16章——OpenGL ES平台
在最后一章中,我们抛开API的细节,讨论如何为iOS 7、Android 4.3 NDK、Android 4.3 SDK、Windows和Linux构建OpenGL ES样板代码。该章的意图是作为一个指南,帮助你在所选择的OpenGL ES 3.0平台上建立和运行样板代码。
附录A——GL_HALF_FLOAT
附录A详细介绍半浮点格式,并提供如何从IEEE浮点值转换为半浮点值(以及相反方向的转换)的参考。
附录B——内建函数
附录B提供了OpenGL ES着色语言中所有可用的内建函数。
附录C——ES框架API
附录C提供了我们为本书开发的实用框架的参考,并说明了每个函数的作用。
OpenGL ES 3.0参考卡片
本书正文前面有几页OpenGL ES 3.0参考卡片,版权归Khronos所有,并授权我们使用。该参考卡片包含了OpenGL ES 3.0中所有函数的完整列表以及OpenGL ES着色语言中的所有类型、操作符、限定符、内建函数和函数。
代码和着色器示例
本书包括大量程序和着色器示例。你可以从本书英文版网站(opengles-book.com)上下载这些示例,该网站提供了寄存本书代码的github.com网站链接。在写作本书时,示例程序已在iOS7、Android 4.3 NDK、 Android 4.3 SDK、 Windows (OpenGL ES 3.0 Emulation)和 Ubuntu Linux上编译和测试过。该网站提供了任何必要工具的下载链接。

专家评论

“作为一名图形技术人员和认真的OpenGL ES开发人员,我真心诚意地认为,如果你只购买一本有关OpenGL ES 3.0编程的书籍,那么就应该是买这本书。Dan和 Budirijanto的这本书很明显是程序员写给程序员的书,任何对OpenGL ES 3.0感兴趣的人都有必要阅读它。本书信息丰富,结构严谨,内容全面,尤其是可操作性强。你会发现在编程过程中,你将会一次又一次地打开本书,而不是阅读OpenGL ES 的规范。我给它最高的推荐级别。”
——Rick Tewell,Freescale图形技术架构师
“本书用清晰、全面的解释和大量示例介绍了OpenGL ES的最新版本。任何开发移动应用的人的案头都应该准备一本。”
——Dave Astle,高通公司图形工具主管,GameDev.net创始人
“本书的第2版详细介绍了OpenGL ES 3.0规范,并用丰富的实用信息和示例帮助不同水平的开发者立即开始编程。针对用我们的PowerVR Rogue图形为各种移动和嵌入式产品创建应用的成千上万的开发人员,我们推荐将本书作为OpenGL ES 3.0的入门读物。”
——Kristof Beets,Imagination技术公司业务开发部
“这是一本可靠的OpenGL ES 3.0参考书。它介绍了这一API的所有方面,帮助所有开发人员熟悉和理解API,并专门介绍了ES 3.0的新功能。”
——Jed Fisher,4D Pipeline执行合伙人
“这是一本清晰且全面的OpenGL ES 3.0参考书,它出色地介绍了现代OpenGL编程中的所有概念。这是我在研究嵌入式OpenGL时希望带在身边的指南。”
——Todd Furlong,Inv3rsion公司总裁兼首席工程师

上架指导

计算机\程序设计

封底文字

“作为一名图形技术人员和认真的OpenGL ES开发人员,我真心诚意地认为,如果你只购买一本有关OpenGL ES 3.0编程的书籍,那么就应该是这本书。Dan和 Budirijanto的这本书很明显是程序员写给程序员的书,任何对OpenGL ES 3.0感兴趣的人都有必要阅读它。你会发现在编程过程中,你将会一次又一次地打开本书,而不是阅读OpenGL ES 的规范。我极力推荐你阅读它!”
—Rick Tewell,Freescale图形技术架构师
“本书用清晰、全面的解释和大量示例,介绍了OpenGL ES的最新版本,任何开发移动应用的人的桌面上都应该有它。”
—Dave Astle,高通公司图形工具主管,GameDev.net创始人

OpenGL ES是行业领先的软件接口和图形库,用于在手持设备和嵌入式设备上渲染复杂的3D图形。它的最新版本OpenGL ES 3.0能够为新型游戏和应用创建绝妙的视觉效果,而无须牺牲设备性能或者电池寿命。
在本书中,作者全面介绍了OpenGL ES API和着色语言,包括OpenGL ES 3.0的各种功能,如阴影贴图、实例化、多重渲染目标、统一缓冲区对象、纹理压缩、程序二进制码和变换反馈等。
通过详尽的可下载的C代码示例,大家能够学到图形管线各个方面的设置和编程方法,并能循序渐进地学习从入门技术到高级的逐像素照明及例子系统。自始至终,你都能找到优化性能、最大化API和硬件效率,以及在广泛的应用程序中充分利用OpenGL ES 3.0的实用技巧。
所有代码都在iOS 7、Andriod 4.3、Windows(OpenGL ES 3.0仿真)和Ubuntu Linux上编译和测试过,作者还阐述了各种平台上的构建方法。

作者简介

(美)Dan Ginsburg Budirijanto Purnomo 等著:暂无简介

译者简介

姚军 等译:暂无简介

译者序

自计算机诞生以来,图形处理就是其应用领域中的一个重要的方面,不管是用于科学研究、设计还是娱乐,强大的图形处理能力都是人们梦寐以求的。进入PC时代以来,和CPU相比图形处理单元(GPU)的发展速度有过之而无不及。在移动设备大行其道的今天,图形处理的领域又扩展到掌上娱乐等方向,与人们的日常生活更加息息相关。
如何充分利用GPU强大的性能呢?精心开发的驱动程序和API是其中的关键,有了它们,应用和游戏程序开发者才能够从繁琐的绘图实现中解放出来,将其才华应用到应用程序中真正闪光的创意上。在PC时代出现的众多API和程序库中,Khronos组织开发的OpenGL无疑是个中翘楚,它所提供的丰富功能、极佳的性能以及跨平台的特性得到了广大硬件供应商和编程开发人员的喜爱,很快成为最受欢迎的桌面图形API之一。
移动和嵌入式设备日益成为人们生活中不可或缺的一部分,受限于较低的性能和硬件规格以及平台供应商的多样性,这些设备上的图形编程多年来一直困扰着设备制造商和应用开发人员。人们自然地想到,如果在移动平台上有类似于桌面OpenGL那样的API,那该是多么令人期待的事情。Khronos不负众望,在OpenGL的基础上开发出了用于手持和嵌入式平台的OpenGL ES API及配套的着色语言。这个程序库不仅保留了OpenGL中丰富的功能,而且引入了许多根据目标设备特点优化的特性,为移动图形应用打开了一扇窗户,很快成为业界领先的图形API,为Apple、Google等移动平台供应商所采用和支持。
从1.0版本开始,随着硬件平台的发展以及桌面OpenGL的升级换代,OpenGL ES也推出了数个版本,OpenGL ES 3.0是其最新版本,它充分利用了硬件发展的最新成果,在性能上所做的妥协更少,对桌面版本功能的保留和兼容性更好,从而使更多的桌面图形开发人员投身于移动平台,大大推进了这些平台上图形应用的发展。
本书是由几位OpenGL ES专家合作编著,是适用于全面学习OpenGL ES规范的权威指南。在介绍OpenGL ES 2.0的第1版的基础上,现在的版本全面介绍了OpenGL ES 3.0的各种特性,尤其重点介绍了对2.0版本新增的功能。从OpenGL ES 3.0基本概念的介绍开始,通过大量详尽的示例,本书介绍了OpenGL ES可编程图形管线的全貌,既有简单图形的渲染方法,又深入介绍了粒子系统等高级特效。刚接触OpenGL ES的读者可以通过阅读本书对OpenGL ES有较为深入的了解,而对OpenGL ES编程有一定经验的读者可以从中得到高级技术的概述。书中所附的OpenGL ES参考卡片以及对各种函数、类型、接口的深入介绍,更可以长期作为开发人员的资料来源。
本书的翻译工作主要由姚军完成,徐锋、陈绍继、郑端、吴兰陟、施游、林起浪、陈志勇、刘建林、白龙、宁懿等也为本书的翻译工作做出了贡献,在此感谢机械工业出版社华章分社的工作人员对本书翻译工作的帮助和支持,并希望广大读者多多指正。

译者

图书目录

本书赞誉
译者序

前言
致谢
第1章 OpenGL ES 3.0简介 1
1.1 OpenGL ES 3.0 2
1.1.1 顶点着色器 3
1.1.2 图元装配 5
1.1.3 光栅化 5
1.1.4 片段着色器 6
1.1.5 逐片段操作 7
1.2 OpenGL ES 3.0新功能 8
1.2.1 纹理 8
1.2.2 着色器 10
1.2.3 几何形状 11
1.2.4 缓冲区对象 11
1.2.5 帧缓冲区 12
1.3 OpenGL ES 3.0和向后兼容性 12
1.4 EGL 13
1.4.1 使用OpenGL ES 3.0编程 14
1.4.2 库和包含文件 14
1.5 EGL命令语法 14
1.6 OpenGL ES命令语法 15
1.7 错误处理 16
1.8 基本状态管理 16
1.9 延伸阅读 17
第2章 你好,三角形:一个OpenGL ES 3.0示例 18
2.1 代码框架 18
2.2 示例下载位置 19
2.3 “你好,三角形”(Hello Triangle)示例 19
2.4 使用OpenGL ES 3.0框架 23
2.5 创建简单的顶点和片段着色器 24
2.6 编译和加载着色器 25
2.7 创建一个程序对象并链接着色器 26
2.8 设置视口和清除颜色缓冲区 27
2.9 加载几何形状和绘制图元 28
2.10 显示后台缓冲区 29
2.11 小结 29
第3章 EGL简介 30
3.1 与窗口系统通信 30
3.2 检查错误 31
3.3 初始化EGL 32
3.4 确定可用表面配置 32
3.5 查询EGLConf ig属性 33
3.6 让EGL选择配置 35
3.7 创建屏幕上的渲染区域:EGL窗口 37
3.8 创建屏幕外渲染区域:EGL Pbuffer 39
3.9 创建一个渲染上下文 42
3.10 指定某个EGLContext为当前上下文 43
3.11 结合所有EGL知识 44
3.12 同步渲染 46
3.13 小结 46
第4章 着色器和程序 47
4.1 着色器和程序 47
4.1.1 创建和编译一个着色器 48
4.1.2 创建和链接程序 51
4.2 统一变量和属性 54
4.2.1 获取和设置统一变量 55
4.2.2 统一变量缓冲区对象 60
4.2.3 获取和设置属性 64
4.3 着色器编译器 64
4.4 程序二进制码 65
4.5 小结 66
第5章 OpenGL ES着色语言 67
5.1 OpenGL ES着色语言基础知识 67
5.2 着色器版本规范 68
5.3 变量和变量类型 68
5.4 变量构造器 69
5.5 向量和矩阵分量 70
5.6 常量 71
5.7 结构 71
5.8 数组 72
5.9 运算符 72
5.10 函数 73
5.11 内建函数 74
5.12 控制流语句 74
5.13 统一变量 75
5.14 统一变量块 75
5.15 顶点和片段着色器输入/输出 77
5.16 插值限定符 79
5.17 预处理器和指令 80
5.18 统一变量和插值器打包 81
5.19 精度限定符 82
5.20 不变性 83
5.21 小结 85
第6章 顶点属性、顶点数组和缓冲区对象 87
6.1 指定顶点属性数据 87
6.1.1 常量顶点属性 88
6.1.2 顶点数组 88
6.2 在顶点着色器中声明顶点属性变量 95
6.3 顶点缓冲区对象 98
6.4 顶点数组对象 106
6.5 映射缓冲区对象 109
6.6 复制缓冲区对象 112
6.7 小结 113
第7章 图元装配和光栅化 114
7.1 图元 114
7.1.1 三角形 114
7.1.2 直线 115
7.1.3 点精灵 116
7.2 绘制图元 117
7.2.1 图元重启 119
7.2.2 驱动顶点 119
7.2.3 几何形状实例化 120
7.2.4 性能提示 122
7.3 图元装配 124
7.3.1 坐标系统 124
7.3.2 透视分割 126
7.3.3 视口变换 126
7.4 光栅化 127
7.4.1 剔除 127
7.4.2 多边形偏移 128
7.5 遮挡查询 130
7.6 小结 131
第8章 顶点着色器 132
8.1 顶点着色器概述 133
8.1.1 顶点着色器内建变量 133
8.1.2 精度限定符 135
8.1.3 顶点着色器中的统一变量限制数量 136
8.2 顶点着色器示例 138
8.2.1 矩阵变换 139
8.2.2 顶点着色器中的照明 141
8.3 生成纹理坐标 145
8.4 顶点蒙皮 146
8.5 变换反馈 150
8.6 顶点纹理 151
8.7 将OpenGL ES 1.1顶点管线作为ES 3.0顶点着色器 152
8.8 小结 159
第9章 纹理 160
9.1 纹理基础 160
9.1.1 2D纹理 161
9.1.2 立方图纹理 161
9.1.3 3D纹理 162
9.1.4 2D纹理数组 163
9.1.5 纹理对象和纹理的加载 163
9.1.6 纹理过滤和mip贴图 167
9.1.7 自动mip贴图生成 171
9.1.8 纹理坐标包装 172
9.1.9 纹理调配 173
9.1.10 纹理细节级别 173
9.1.11 深度纹理对比(百分比渐进过滤) 174
9.1.12 纹理格式 174
9.1.13 在着色器中使用纹理 180
9.1.14 使用立方图纹理的示例 182
9.1.15 加载3D纹理和2D纹理数组 184
9.2 压缩纹理 186
9.3 纹理子图像规范 188
9.4 从颜色缓冲区复制纹理数据 191
9.5 采样器对象 193
9.6 不可变纹理 195
9.7 像素解包缓冲区对象 196
9.8 小结 197
第10章 片段着色器 198
10.1 固定功能片段着色器 199
10.2 片段着色器概述 200
10.2.1 内建特殊变量 201
10.2.2 内建常量 202
10.2.3 精度限定符 202
10.3 用着色器实现固定功能技术 203
10.3.1 多重纹理 203
10.3.2 雾化 204
10.3.3 Alpha测试(使用Discard) 207
10.3.4 用户裁剪平面 208
10.4 小结 209
第11章 片段操作 210
11.1 缓冲区 211
11.1.1 请求更多缓冲区 211
11.1.2 清除缓冲区 212
11.1.3 用掩码控制帧缓冲区的写入 213
11.2 片段测试和操作 214
11.2.1 使用剪裁测试 214
11.2.2 模板缓冲区测试 215
11.3 混合 220
11.4 抖动 221
11.5 多重采样抗锯齿 222
11.6 在帧缓冲区读取和写入像素 223
11.7 多重渲染目标 226
11.8 小结 229
第12章 帧缓冲区对象 230
12.1 为什么使用帧缓冲区对象 230
12.2 帧缓冲区和渲染缓冲区对象 231
12.2.1 选择渲染缓冲区与纹理作为帧缓冲区附着的对比 232
12.2.2 帧缓冲区对象与EGL表面的对比 232
12.3 创建帧缓冲区和渲染缓冲区对象 233
12.4 使用帧缓冲区对象 234
12.4.1 多重采样渲染缓冲区 235
12.4.2 渲染缓冲区格式 235
12.5 使用帧缓冲区对象 237
12.5.1 连接渲染缓冲区作为帧缓冲区附着 238
12.5.2 连接一个2D纹理作为帧缓冲区附着 238
12.5.3 连接3D纹理的一个图像作为帧缓冲区附着 240
12.5.4 检查帧缓冲区完整性 241
12.6 帧缓冲区位块传送 242
12.7 帧缓冲区失效 243
12.8 删除帧缓冲区和渲染缓冲区对象 244
12.9 删除用作帧缓冲区附着的渲染缓冲区对象 245
12.10 示例 246
12.11 性能提示和技巧 251
12.12 小结 251
第13章 同步对象和栅栏 252
13.1 刷新和结束 252
13.2 为什么使用同步对象 253
13.3 创建和删除同步对象 253
13.4 等待和向同步对象发送信号 253
13.5 示例 254
13.6 小结 255
第14章 OpenGL ES 3.0高级编程 256
14.1 逐片段照明 256
14.1.1 使用法线贴图的照明 257
14.1.2 照明着色器 258
14.1.3 照明方程式 260
14.2 环境贴图 261
14.3 使用点精灵的粒子系统 264
14.3.1 粒子系统设置 264
14.3.2 粒子系统顶点着色器 265
14.3.3 粒子系统片段着色器 266
14.4 使用变换反馈的粒子系统 268
14.4.1 粒子系统渲染算法 269
14.4.2 使用变换反馈发射粒子 269
14.4.3 渲染粒子 273
14.5 图像后处理 274
14.5.1 渲染到纹理设置 274
14.5.2 模糊片段着色器 274
14.5.3 眩光 275
14.6 投影纹理 276
14.6.1 投影纹理基础 277
14.6.2 投影纹理所用的矩阵 278
14.6.3 投影聚光灯着色器 278
14.7 使用3D纹理的噪声 281
14.7.1 生成噪声 281
14.7.2 使用噪声 285
14.8 过程纹理 286
14.8.1 过程纹理示例 287
14.8.2 过程纹理的抗锯齿 289
14.8.3 关于过程纹理的延伸阅读 291
14.9 用顶点纹理读取渲染地形 291
14.9.1 生成一个正方形的地形网格 292
14.9.2 在顶点着色器中计算顶点法线并读取高度值 293
14.9.3 大型地形渲染的延伸阅读 294
14.10 使用深度纹理的阴影 294
14.10.1 从光源位置渲染到深度纹理 294
14.10.2 从眼睛位置用深度纹理渲染 297
14.11 小结 299
第15章 状态查询 300
15.1 OpenGL ES 3.0实现字符串查询 300
15.2 查询OpenGL ES实现决定的限制 301
15.3 查询OpenGL ES状态 303
15.4 提示 306
15.5 实体名称查询 307
15.6 不可编程操作控制和查询 307
15.7 着色器和程序状态查询 308
15.8 顶点属性查询 309
15.9 纹理状态查询 310
15.10 采样器查询 310
15.11 异步对象查询 311
15.12 同步对象查询 311
15.13 顶点缓冲区查询 312
15.14 渲染缓冲区和帧缓冲区状态查询 312
15.15 小结 313
第16章 OpenGL ES平台 314
16.1 在包含Visual Studio的Microsoft Windows上构建 314
16.2 在Ubuntu Linux上构建 316
16.3 在Android 4.3+ NDK (C++)上构建 317
16.3.1 先决条件 317
16.3.2 用Android NDK构建示例代码 318
16.4 在Android 4.3+ SDK上构建(Java) 318
16.5 在iOS 7上构建 319
16.5.1 先决条件 319
16.5.2 用Xcode 5构建示例代码 319
16.6 小结 320
附录A GL_HALF_FLOAT 321
附录B 内 建 函 数 325
附录C ES框架API 338

教学资源推荐
作者: [美]怀亚特·S. 纽曼(Wyatt S. Newman) 著
作者: (澳)Leszek A.Maciaszek    著         Macquarie大学
参考读物推荐
作者: (美)Stephen T.Albin
作者: (美)Meghraj Thakkar
作者: [美]哈维尔·卢拉辛(Javier Luraschi) 凯文·郭(Kevin Kuo) 埃德加·鲁伊斯(Edgar Ruiz)著
作者: 郭刚 等编著