热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WebGL高级编程:开发Web3D图形PDF(中文版带书签)

WebGL高级编程:开发Web3D图形目录WebGL简介11.1WebGL基础11.2浏览器3D图形吸引人的原因21.3设计一个图形API31.3.1即时模式API3

WebGL高级编程:开发Web3D图形

目录

WebGL简介1
1.1 WebGL基础1
1.2 浏览器3D图形吸引人的原因2
1.3 设计一个图形API3
1.3.1 即时模式API3
1.3.2 保留模式API3
1.4 图形硬件简介4
1.4.1 GPU4
1.4.2 帧缓存5
1.4.3 纹理存储器6
1.4.4 视频控制器6
1.5 WebGL图形流水线6
1.5.1 顶点着色器8
1.5.2 图元装配11
1.5.3 光栅化12
1.5.4 片段着色器12
1.5.5 逐片段操作15
1.6 WebGL与其他图形技术的比较16
1.6.1 OpenGL16
1.6.2 OpenGL ES 2.018
1.6.3 Direct3D19
1.6.4 HTML5画布21
1.6.5 可缩放矢量图形25
1.6.6 VRML与X3D26
1.7 线性代数简介27
1.7.1 坐标系27
1.7.2 点与顶点27
1.7.3 矢量28
1.7.4 矢量的点积或标积29
1.7.5 叉积30
1.7.6 齐次坐标31
1.7.7 矩阵31
1.7.8 仿射变换34
1.8 小结39
第2章 创建基本的WebGL示例41
2.1 绘制三角形41
2.1.1 创建WebGL上下文45
2.1.2 创建顶点着色器和片段着色器47
2.1.3 编译着色器48
2.1.4 创建程序对象和链接着色器48
2.1.5 建立缓冲50
2.1.6 绘制场景51
2.2 了解WebGL编码风格52
2.3 调试WebGL应用程序53
2.3.1 使用Chrome开发人员工具53
2.3.2 Firebug的使用59
2.3.3 WebGL的错误处理与错误代码61
2.3.4 WebGL Inspector64
2.3.5 WebGL的故障排除70
2.4 用DOM API载入着色器71
2.5 ***的综合示例73
2.6 小结77
第3章 绘制79
3.1 使用WebGL绘制图元和绘图方法79
3.1.1 图元80
3.1.2 顶点组绕顺序的重要性84
3.1.3 WebGL的绘图方法85
3.2 类型化数组91
3.2.1 缓冲与视图91
3.2.2 WebGL支持的视图类型92
3.3 探讨不同的绘图方法93
3.3.1 gl.drawArrays()和gl.TRIANGLES94
3.3.2 gl.drawArrays()方法和gl.TRIANGLE_STRIP图元96
3.3.3 gl.drawElements()方法和gl.TRIANGLES图元98
3.3.4 gl.drawElements()方法和gl.TRIANLE_STRIP图元100
3.3.5 总结比较102
3.3.6 前期变换顶点缓存和后期变换顶点缓存102
3.4 为提高性能交叉存放顶点数据104
3.5 使用顶点数组或常量顶点数据113
3.6 总结本章的*后一个示例114
3.7 小结124
第4章 小型库与变换127
4.1 中矩阵和向量的操作127
4.1.1 Sylvester库128
4.1.2 WebGL-mjs库132
4.1.3 glMatrix库135
4.2 变换运算139
4.3 理解完整的变换流水线145
4.4 变换的实践146
4.4.1 为对象坐标设置缓冲147
4.4.2 用创建变换矩阵并上传给着色器148
4.4.3 将变换矩阵上传给GPU中的顶点着色器148
4.4.4 调用绘图方法149
4.5 理解变换顺序的重要性150
4.5.1 使用一个固定的全局的坐标系150
4.5.2 使用移动的局部的坐标系153
4.5.3 变换矩阵的入栈和出栈操作154
4.6 一个完整的示例:绘制几个变换后的对象157
4.6.1 使用WebGL代码创建立方体159
4.6.2 视图变换和模型变换的组织161
4.7 小结162
第5章 纹理贴图163
5.1 理解丢失上下文164
5.1.1 理解解决丢失上下文问题所需要的设置164
5.1.2 处理丢失上下文问题时需要考虑的几个因素166
5.2 2D纹理与立方映射纹理169
5.3 载入纹理170
5.3.1 创建WebGLTexture对象170
5.3.2 绑定纹理171
5.3.3 载入图像数据171
5.3.4 将纹理上传到GPU173
5.3.5 定义纹理参数174
5.3.6 理解载入纹理的完整过程175
5.3.7 创建一个纹理对象并载入纹理数据177
5.4 定义纹理坐标178
5.5 着色器中的纹理处理180
5.6 处理纹理过滤183
5.6.1 纹理伸展184
5.6.2 纹理收缩185
5.6.3 Mip映射纹理186
5.7 理解纹理坐标包装188
5.7.1 应用gl.REPEAT包装模式188
5.7.2 应用gl.MIRRORED_REPEAT包装模式190
5.7.3 应用gl.CLAMP_TO_EDGE包装模式191
5.8 一个完整的应用纹理示例191
5.9 获得用作纹理的图像194
5.9.1 下载免费纹理194
5.9.2 用自己拍摄的照片生成纹理194
5.9.3 绘制图像195
5.9.4 购买纹理195
5.10 同域策略与跨域资源共享195
5.10.1 同域策略应用于一般的图像196
5.10.2 同域策略应用于纹理197
5.10.3 跨域资源共享199
5.11 小结200
第6章 动画与用户输入203
6.1 创建动画场景203
6.1.1 setInterval()和setTimeout()的使用205
6.1.2 使用requestAnimationFrame()函数206
6.1.3 帧频不同引起的运动补偿209
6.1.4 创建FPS计数器测量动画的平稳性210
6.1.5 用FPS作为测量值的缺点212
6.2 用户交互事件的处理213
6.2.1 DOM Level 0基本事件处理214
6.2.2 DOM Level 2——**事件处理方法215
6.2.3 键盘输入217
6.2.4 鼠标输入221
6.3 综合应用新知识223
6.4 小结229
第7章 光照231
7.1 光源231
7.2 局部光照模型的工作原理232
7.3 Phong反射模型232
7.3.1 环境反射233
7.3.2 漫反射234
7.3.3 镜面反射236
7.3.4 Phong反射模型的完整公式和着色器239
7.3.5 光照效果与纹理相结合243
7.4 WebGL光照中需要的代码246
7.4.1 为顶点法线设置缓存247
7.4.2 计算法线矩阵并上传给着色器249
7.4.3 将光照信息上传给着色器250
7.5 将不同的插值方法用于着色250
7.5.1 平面着色251
7.5.2 Gouraud着色252
7.5.3 Phong着色253
7.6 矢量必须归一化256
7.6.1 顶点着色器中的矢量归一化257
7.6.2 片段着色器的矢量归一化257
7.7 应用不同类型的光源258
7.7.1 平行光258
7.7.2 点光源259
7.7.3 聚光源259
7.8 光强衰减262
7.9 光照映射265
7.10 小结267
第8章 WebGL性能优化269
8.1 WebGL底层工作机制269
8.1.1 支持WebGL的硬件270
8.1.2 关键的软件组成271
8.2 WebGL性能优化274
8.2.1 避免初学者的典型错误274
8.2.2 确定瓶颈位置275
8.2.3 有关性能的一般性建议279
8.2.4 改善CPU受限的WebGL应用程序性能的建议282
8.2.5 改善顶点受限的WebGL应用程序性能的建议283
8.2.6 改善像素受限的WebGL应用程序性能的建议285
8.3 深入分析融合286
8.3.1 融合简介286
8.3.2 设置融合函数287
8.3.3 绘制顺序与深度缓冲区290
8.3.4 绘制包含不透明对象和半透明对象的场景290
8.3.5 修改融合公式中的默认运算符291
8.3.6 使用预乘alpha值292
8.4 深入讨论WebGL292
8.4.1 使用WebGL框架293
8.4.2 发布到Google Chrome Web Store293
8.4.3 使用额外资源293
8.5 小结294

 

下载地址:https://pan.baidu.com/s/1ro5Ma0Y4_CVIr0eVft26NQ

关注微信公众号获取提取码:

  输入:web1     获取提取码   

转:https://www.cnblogs.com/kuoAT/p/9482598.html



推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
author-avatar
死性Oo不改2502917357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有