logo资料库

OpenGL ES 2.0编程指南中文版.pdf

第1页 / 共217页
第2页 / 共217页
第3页 / 共217页
第4页 / 共217页
第5页 / 共217页
第6页 / 共217页
第7页 / 共217页
第8页 / 共217页
资料共217页,剩余部分请下载后查看
OpenGL ES 2.0 编程向导 Aaftab Munshi Dan Ginsburg Dave Shrener 插图列表……………xiii 例子列表……………xv 表格列表……………xix 前言……………xxi 序……………xxiii 读者建议 书发行机构 代码及着色器例子 1. OpenGL ES 2.0 目录 OpenGL ES 是什么? OpenGL ES 2.0 定点着色器 预先 片段着色器 片段预处理 OpenGL ES 2.0 和 OpenGL ES 1.0 向后兼容 EGL OpenGL ES 2.0 编程 库和包含文件 EGL 命令规则 OpenGL ES 命令规则 错误处理 Flush 和 Finish 基本状态管理 扩展阅读 2. hello 三角形:一个 OpenGL ES 2.0 例子 代码框架 怎么下载例子 Hello 例子 编译和运行例子 使用 OpenGL ES 2.0 框架 创造一个简单的矩阵和片段着色器 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
装载着色器 创造一个项目目标并连接着色器 设置视口并清楚颜色缓冲区 装载几何图形并画一个 在后缓冲区显示物体 3. 一个 EGL 指导例子 如何窗口系统联系 检查错误 EGL 初始化 EGL 配置属性 EGL 选择属性 可用的配置属性 创建一个 On-Screen 区域:EGL 窗口 创建一个 Off-Screen 区域:EGL 缓冲 创建一个贴图 做一个 EGL 贴图 连接我们的 EGL 在一起 同步 4. 着色器和编程 着色器和编程 创建着色器 创建链接一个项目 表格和属性 得到和设置 得到和设置属性 5. OpenGL ES 着色器语言 OpenGL ES 着色器语言基础 变量和变量类型 构造变量 矢量和矩阵成员 常量 结构 数组 操作器 函数 内置函数 控制语句 表格 属性 变量 预处理程序和指令 表格和变量 pack 精度和限定 恒定 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
6. 顶点属性、顶点矩阵和缓冲区目标 指定顶点属性数据 顶点属性常量 顶点矩阵 在顶点着色器里声明顶点属性 绑定顶点属性 在顶点着色器了改变 顶点缓冲区目标 缓冲区目标匹配 Tip 性能 7. 基本图元装配和光栅化 基本图元 三角形 直线 点类型 基本 draw 执行 tips 集合 坐标系统 边 透视分割 视口转换 旋转 选择 多边形设置 8. 顶点着色器 顶点着色器预览 顶点着色器变量 向前兼容 ES 2.0 顶点着色器限制 顶点着色器例子 一个顶点着色器例子 顶点着色器光照 普通贴图坐标系 顶点皮肤 OpenGL ES 1.1 固定顶点管道与 ES 2.0 顶点着色器 9. 贴图 2D 贴图 贴图基础 立方体贴图 贴图对象和装载贴图 贴图过滤和 Mip 贴图 自动 Mip 贴图产生 贴图坐标系封装 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
在片段着色器上使用贴图 使用立体贴图的例子 压缩贴图 贴图 subimage 详述 从颜色缓冲区拷贝贴图数据 可选的扩展 3D 贴图 压缩 ericsson 贴图 浮点数贴图 Non_Power_of_two 贴图 10 片段着色器 固定行为片段着色器 片段着色器概述 创建特殊变量 创建恒量 精度质量 ES2.0 片段着色器限制 使用固定行为技术的着色器 多重贴图 雾 透明测试 使用平滑着色 11 片段着色器行为 缓冲器 请求额外的缓冲区 清除缓冲区 对帧缓冲区使用遮挡只读 Stencil 测试 使用剪裁测试 深度缓冲区测试 片段着色器测试和运行 混合 抖动 多重采样和抗锯齿 帧缓冲区读写像素数据 选择一个 render 缓冲区贴图作为帧缓冲区属性 帧缓冲区 EGL 窗口 12 帧缓冲区 什么是帧缓冲区 帧缓冲区和 render 缓冲区 创造一个帧缓冲区和 render 缓冲区目标 使用 render 缓冲区 使用帧缓冲区 使用 render 缓冲区作为帧缓冲区属性 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
删除 render 缓冲区目标仍然使用帧缓冲区属性 读像素和帧缓冲区目标 Projective 贴图基础 Projective 贴图矩阵 Projective 聚光灯阴影 一个贴图程序例子 贴图抗模糊处理 对 procedural 更好的 render 贴图 OpenGL ES 2.0 创建一个 queries 字符串 微粒系统设置 微粒系统顶点阴影 微粒系统片段着色器 Render 对贴图设置 Tips 和 Tricks 性能 Per 片段光照 正常地图的光照 光照阴影 光照方程 使用 2D 贴图作为帧缓冲区属性 使用 3D 贴图作为帧缓冲区属性 检查帧缓冲区 completeness 删除帧缓冲区和 render 缓冲区 例子 13 OpenGL ES 2.0 先进编程 环境地图 微粒系统和点 sprites 图像 post 过程 贴图程序 14 state queries 执行 querying 的限制 阴影和 矩阵属性 贴图属性 据帧缓冲区 片段着色器模糊 光照 bloom Projective 贴图 3D 贴图噪声 噪声产生 使用噪声 Querying OpenGL ES 状态 Hints Queries 名字实体 NON 编程运行控制和 queries 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
Render 缓冲区和平的缓冲区 15 在不同平台使用 OpenGL ES 和 EGL 不同平台概述 在线资源 C++ 便携性 OpenKODE 与平台有关的二进制码 扩展 A GL_HALF_FLOAT_OES 16 位浮点数 转换浮点数为半浮点数 B 编译行为 角和三角法行为 Exponential 行为 Common 行为 几何图形行为 矩阵行为 矢量关系行为 贴图表 派生行为 C 着色器编程语言语法 D ES 框架 API 框架源码 转变行为 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
1 什么是 OpenGL ES? OpenGL ES 是一个为便携或嵌入式设备例如:移动电话、PDAs、监视器、等,发展的 3D 绘图 APIs(应用编程接口)。OpenGL ES 是一个被叫做 Khronos 联盟的组织创造的一系 列 APIs 中的一个。Khronos 联盟成立于 2000 年一月,是一个专注为手持和嵌入式设备建立 开放标准和自由版权的 APIs 的工业联盟。 在桌面设备中有两个 3D API 接口,DirectX 和 OpenGL。DirectX 是运行 Window 系统 平台事实上的 3D 标准,在 3D 游戏平台中主要的标准。OpenGl 是一个跨平台的 3D API 标 准,能够运行在 linux 系统,各种 UNIX 系统,Mac OS X 和 Wicrosoft 系统等等。它是广泛 接受的 3D API,这个 API 被 Doom 和 Quake 系列游戏使用。用于 Mac OS X 的接口,在 CAD 应用像 CATIA、数字建模应用像 Maya 和 SoftImage|XSI。 因为 OpenGL 作为 3D API 的广泛使用,这是很自然的从桌面的 OpenGL 开始发展为手 持设备和便携式开放标准的 3D API;又因为使用 OpenGL ES 的设备地址空间和内存的限制、 低的内存带宽、敏感的电源功耗、缺乏浮点运算硬件,所以修改它以适用与手持和便携设备 领域。工作组对 OpenGL ES 做了下面的一些定义限制。 OpenGL ES API 是巨大的和复杂的,工作组的目标是建立一个适合设备驱动程序。为此 工作组删除了一些 OpenGL API 的冗余设计,对同一种操作有多种实现方法,只留下主要的, 多余的技术被删除,例如:一个几何体,OpenGL 中可以使用立即模式、显示列表、顶点矩 阵,在 OpenGL ES 中只能使用顶点矩阵,显示列表和立即模式被移除。 移除冗余是重要的,但保持兼容性也是重要的。尽可能的 OpenGL ES 被设计成 OpenGL 的嵌入式子集,OpenGL 将也能运行 OpenGL ES 的程序。原因是作为一个子集能更好的应 用桌面程序的代码和工具。虽然如此,也有偏离,特别是 OpenGL ES 2.0,细节将在后面的 章节讨论。 手持和便携设备的限制被引入,例如减少电力消耗、减少着色器性能,渲染质量被引入 着色器语言。 屏幕,在屏幕上做图尽可能的保持好的质量,将是重要的一项工作。 性的测试,这些设备必须通过完整的测试。 一共有三个 OpenGL ES 白皮书被释放,OpenGL ES 1.0、OpenGL ES 1.1 和 OpenGL ES 2.0 OpenGL ES 1.0 和 OpenGL ES 1.1 描述固定功能管线从 OpenGL1.3 和 OpenGL1.5 发展而来, OpenGL ES 2.0 描述可编程绘图管线,发展自 OpenGL 2.0,因为发展自 OpenGL,意味着 OpenGL 是 OpenGL ES 的基础,决定着未来 OenGL ES 的版本, OpenGL ES 2.0 来自 OpenGL 2.0 API,确保了对游戏的支持,例如在颜色调色板 1 用的图 片来自 demo 球游戏,OpenGL ES 2.0 的目标和他使用的着色器优良的效果例如环境绘制和 per-fragment 光照。这个游戏的例子在 OpenGL ES 2.0 是很普遍的。有了 OpenGL ES 2.0 在 桌面的应用将可以用于便携设备。 OpenGL ES 的设计者目标是确保最小的图像质量,大多数的手持设备只用一个有限的 QpenGL ES 工作组提供确保各种 OpenGL ES 设备正常工作、提供好的图像质量、健壮 在本章里,我们给 OpenGL ES2.0 的管线一个介绍。 OpenGL ES 2.0 OpenGL ES 2.0 是本书中要讲的 API,目标是讲述完整的细节(核心和扩展),给出怎么 使用的例子,讨论各种优化技术,读完本书希望能你能懂的 OpenGL ES 2.0 的核心 API,能够 开发 OpenGL ES 2.0 的应用程序,不要担心技术细节,懂得怎么去工作。 OpenGL ES 2.0 包含两部分:OpenGL ES 2.0 API 说明和 OpenGL ES 着色器语言说明, 图 1_1 显示 OpenGL ES 2.0 图像管线,图 1 _1 中的的着色器盒子描述了 OpenGL ES 2.0 的管 道可编程阶段,OpenGL ES 2.0 可编程管线的每个阶段预览在下面介绍。 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
顶点着色器 本节给出概述,后面章节深入介绍。 顶点着色器一般的编程方法; 属性—顶点矩阵支持的 Per_vertex 数据 Uniforms—顶点着色器使用的常量数据 Samplers—被 Uniforms 使用的特殊类型,在顶点着色器的贴图中使用,是可选项 着色器编程—顶点着色器编程源码或可执行的部分 顶点着色器的输出叫做 varying 变量,在最初的光栅化阶段,这些变量被计算,作为片 段着色器的输入,从顶点着色器的矩阵使用插补的方法产生片段着色器的变量,输入和输出 在图 1_2 描述: 翻译: 江湖游侠 QQ;86864472 email:mazhaoyang2005@gmail.com 本翻译花费作者 3 个月有余,能力有限,错误在所难免,欢迎交流、指出错误,转载请注明出处,
分享到:
收藏