这是我参与「第四届青训营 」笔记创作活动的第十二天
1. 什么是WebGL/什么是 GPU
WebGL是什么?
WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航效果以及一些数据的视觉化。
WebGL为什么不像其它前端技术那么简单
图形绘制的过程
2. 初始化WebGL
- 创建WebGL上下文
- 创建WebGL Program
- 将数据存入缓冲区
- 将缓冲区数据读到GPU
- GPU执行WebGL程序,输出结果
- 创建WebGL上上下文
- 着色器 (顶点着色器,片源着色器)
3. 创建program
- 坐标系
- 缓存/渲染
- 输出/绘制
所以现在可以理解为什么WebGL难了
同样的效果如果用2d实现只需要8行代码
3. 认识WebGl
3.1 坐标系
3.2 变换
3.3 3d标准模型的四个齐次矩阵
参考资料
SpriteJs
SpriteJS 是一款由 360 奇舞团开源的跨终端 canvas 绘图库,可以基于 canvas 快速绘制结构化 UI 、动画和交互效果,并发布到任何拥有 canvas 环境的平台上(比如浏览器、小程序和 node )。
ThreeJS
three.js就是使用javascript 来写3D程序。 在浏览器端,WebGL 是一个底层的标准,在这些标准被定义之后,Chrome、Firefox之类的浏览器实现了这些标准。然后,就能通过 JavaScript 代码,在网页上实现三维图形的渲染了。ThreeJS则是封装了底层的图形接口,更容易来实现3D程序。
ShaderToy
shadertoy是一个编辑,分享和查看shader程序及其实现的效果的网站,上面有许多大佬分享他们制作的酷炫效果的代码,和完全开源的代码,你可以在大佬的代码上进行修改并实时看到修改的效果。非常的好玩!