OpenGL ES 3.0编程指南

OpenGL ES 3.0编程指南 pdf epub mobi txt 电子书 下载 2026

出版者:机械工业出版社
作者:金斯伯格 (Dan Ginsburg)
出品人:
页数:344
译者:姚军
出版时间:2015-2-1
价格:CNY 79.00
装帧:平装
isbn号码:9787111489153
丛书系列:华章程序员书库
图书标签:
  • OpenGL
  • 图形学
  • 游戏开发
  • 计算机图形学
  • 翻译渣,史上之最。
  • 编程
  • C++
  • 代码
  • OpenGL ES 3
  • 0
  • OpenGL ES
  • 移动图形
  • 游戏开发
  • 嵌入式系统
  • 图形渲染
  • Android
  • iOS
  • GPU
  • 计算机图形学
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

作者简介

Dan Ginsburg,Upsample Software公司创始人,该软件公司提供3D图形和GPU计算的咨询服务。Dan参与撰写了多部著作,包括《OpenCL 编程指南》和《OpenGL Shading Language》(第3版)。在过去的工作中,Dan曾经开发OpenGL驱动程序、桌面和手持3D演示、GPU开发人员工具、3D医学显示和游戏。

Budirijanto Purnomo,AMD公司高级软件架构师,领导跨越多个AMD软件栈的GPU调试和剖析技术的软件实现工作。他与多位AMD的软件和硬件架构师协作,定义用于调试和剖析GPU应用的未来硬件架构。他曾在国际会议上发表过许多与计算机图形技术相关的论文。

Dave Shreiner,ARM公司图形与GPU计算部门主管,自从OpenGL诞生之日起就积极地参与到它的开发当中。他创建了OpenGL的第一个商业培训课程,并且拥有超过20年的OpenGL编程教学经验。

目录信息

本书赞誉
译者序

前言
致谢
第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 查询EGLConfig属性 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
· · · · · · (收起)

读后感

评分

很长时间没完整的看完一本技术书了,之前虽做了两年Unity,学些Shader,但缺乏对GLSL和HLSL的了解,现在中国手游热,自己现在也在从事移动端游戏引擎的相关工作,对GLES的了解也是必须的。这书虽然不十分出彩,但知识点都涵盖了,也并不全是罗列API。是有不小收获的,当你了解...  

评分

我就说一处: glShaderSource 最后一个参数 length,看看这货怎么翻译的 “如果length为NULL, 着色器字符串将被认定为空。” 啥意思? 再看官方原版 “ If length is NULL, each string is assumed to be null terminated.” 请不好糟蹋好书了好吗?  

评分

很长时间没完整的看完一本技术书了,之前虽做了两年Unity,学些Shader,但缺乏对GLSL和HLSL的了解,现在中国手游热,自己现在也在从事移动端游戏引擎的相关工作,对GLES的了解也是必须的。这书虽然不十分出彩,但知识点都涵盖了,也并不全是罗列API。是有不小收获的,当你了解...  

评分

很长时间没完整的看完一本技术书了,之前虽做了两年Unity,学些Shader,但缺乏对GLSL和HLSL的了解,现在中国手游热,自己现在也在从事移动端游戏引擎的相关工作,对GLES的了解也是必须的。这书虽然不十分出彩,但知识点都涵盖了,也并不全是罗列API。是有不小收获的,当你了解...  

评分

论入门学习,DirectX比OpenGL友善得多,版本简单明了,装好SDK开VisualStudio就可以跑,文档案例齐全,省心省事。OpenGL有多麻烦?网上一搜,被告知需要glew;想在不同系统下快速搭建开发环境?再去找找glfw。搜个教程,又要求glut。开始写代码了,OpenGL里面没有内置数学库,...  

用户评价

评分

从一个资深程序员的角度来看,这本书的参考价值和严谨性令人信服。我测试了书中提供的几个示例代码,它们都能够完美地在目标平台上编译和运行,这在技术文档中是一个非常重要的指标。很多书籍的示例代码因为版本迭代或者环境差异,常常伴随着各种莫名其妙的错误,但这本书的示例代码保持了极高的纯净度。另外,作者在引用规范和API细节时非常谨慎和准确,没有出现那种“大概如此”的模糊描述。例如,在处理同步和多线程渲染的章节,书中对OpenGL ES上下文的管理和线程安全性的论述,清晰地指出了哪些操作是线程安全的,哪些需要额外的同步机制,这对于构建大型、复杂的移动应用至关重要。这些细微之处的准确性,体现了作者对底层API的深刻理解和对读者负责的态度,让我可以放心地将书中的指导应用到生产环境中。

评分

坦白说,最初我对这本书抱有一丝疑虑,毕竟“OpenGL ES 3.0”这个主题听起来就充满了枯燥的API调用和繁琐的状态管理。然而,当我翻开前几章,深入到材质和纹理的讲解部分时,我彻底被说服了。作者并没有直接丢给我们一堆晦涩难懂的函数原型,而是非常巧妙地将理论与实际应用场景紧密结合起来。比如,在讲解纹理坐标映射时,书中通过一个模拟真实世界中投影仪的例子,生动地解释了UV坐标的意义,这比单纯背诵公式要有效得多。更让我称道的是,书中对性能优化的讨论。它没有停留在“如何让图形动起来”的层面,而是深入到了“如何让图形高效地动起来”,对VBO(顶点缓冲对象)和FBO(帧缓冲对象)的合理使用给出了非常实用的建议,甚至触及到了移动设备GPU的内存限制问题。这种超越基础教程的深度,使得这本书不仅适合入门者,对于已经有一定基础,希望将自己的移动端渲染能力提升到专业水准的开发者来说,也是一本不可多得的参考书。它教会我的不只是“做什么”,更是“为什么这么做”。

评分

这本书的章节安排逻辑性极强,每深入一个新模块,都像是为前一个模块所学的知识搭建了更稳固的地基。我特别欣赏作者在介绍着色器编程(Shader)时的处理方式。着色器是图形编程的灵魂,也是最容易让人望而却步的部分。这本书没有将GLSL语言作为孤立的知识点讲解,而是将其无缝地嵌入到顶点处理流程和片段处理流程中去。它会先展示一个简单的顶点着色器,然后逐步加入法线、纹理坐标,最后过渡到复杂的计算。这种循序渐进、不断迭代的讲解方式,让我对程序化渲染有了清晰的认识。特别是关于几何着色器(Geometry Shader)和计算着色器(Compute Shader)的介绍,虽然它们在移动端应用相对受限,但作者依然详尽地描述了它们的设计哲学和潜在用途,这极大地拓宽了我的视野,让我意识到ES 3.0不仅仅局限于传统的渲染管线。这种对技术边界的探索精神,在很多同类书籍中是难以见到的。

评分

这本书的书封设计真是让人眼前一亮,那种深邃的蓝色调和简洁的图形元素,一下子就抓住了我的眼球。我拿起它的时候,心里就隐隐觉得,这不仅仅是一本技术手册,更像是一扇通往图形世界大门的钥匙。内页的排版也处理得相当得体,字体大小适中,代码块的着色清晰明了,即便是初次接触图形编程的人,也不会感到过于压抑和不知所措。尤其是那些复杂的概念,比如矩阵变换和光照模型,作者似乎花了大量心思去设计插图和示意图,这些视觉辅助材料极大地降低了理解门槛。我记得有一次为了弄明白深度缓冲区的原理,我反复看了好几遍书本上那几张流程图,每一次都能发现新的细节。这种对阅读体验的重视,让我在学习过程中保持了极高的热情。尽管内容本身涉及了很多底层和晦涩的数学知识,但书籍整体的流畅度和结构上的递进感,使得整个学习过程像是一次有规划的探险,而不是一场毫无头绪的跋涉。这本书的纸张质感也十分不错,拿在手里沉甸甸的,很有厚重感,体现了出版方对专业书籍质量的坚持。

评分

这本书给我带来的最大收获,是建立了一种系统性的图形思维模式。在此之前,我或许能调用函数画出一个三角形,但对于一个复杂的场景,比如动态环境光遮蔽或者后处理特效,我往往会感到无从下手,不知该从渲染管线的哪一步开始着手改造。这本书的价值就在于,它将整个渲染流程(从CPU端的数据准备到GPU端的像素输出)拆解成了一系列可独立理解又相互关联的模块。通过对这些模块的逐一攻克,我逐渐建立起了对整个渲染流水线控制的主动权。它不仅仅是教你如何使用3.0版本的特性,更重要的是,它培养了一种面向未来迭代的能力——当你接触到4.0或者更新的API时,你能够迅速定位到核心的渲染逻辑变化点,而不是需要从头开始摸索。这种授人以渔的教育理念,使得这本书的生命周期远超其技术版本时效性,成为了一本值得长期珍藏和时常翻阅的经典之作。

评分

不推荐,翻译太渣!

评分

最近在看渲染相关内容,当工具书查阅很详尽,很棒//PAUSE 大概读一半了吧//感觉还不错

评分

翻译一般

评分

原书给3⭐,翻译给1⭐, ,翻译错误,不通顺,字漏打,粗心大意,, 原书也有错误,,并且不全面,,

评分

不推荐,翻译太渣!

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有