这是我来参加[第五届青训营]笔记创作活动的第十六天。
今天跟着月影老师学习了WebGL。
WebGL是什么?
WebGL的全称是Web Graphics Library,是一种3D绘图协议,但是WebGL通过增加OpenGL ES2.0的一个js绑定,可以为html5 Canvas提供硬件3D加速渲染,减去了开发网页专用渲染插件的麻烦,还可以创建复杂的3D结构的网站页面和用来设计3D网页游戏等等。
选择GPU的理由:处理好点阵信息,不用复杂的运算
注:GPU≠WebGL≠3D
- 光闸(Raster):几乎所有的现代图形系统都是基于光栅来绘制图形的,光栅就是指构成图像的像素阵列
- 像素(Pixel):一个像素对应图像上的一个点,它通常保存图像上的某个具体位置等信息
- 帧缓存(Frame Buffer):在绘图过程中,像素信息被存放于帧缓存中,帧缓存是一块内存地址
- CPU(Central Processing Unit):中央处理单元,负责逻辑计算
- GPU(Graphics Processing Unit):图形处理单元,负责图形计算
WebGL绘图流程
- 创建webGL上下文
- 创建webGL Program
- 将数据存入缓冲区
- 将缓冲区数据读到GPU
- GPU执行webGL程序,输出结果
Transforms
WebGL完美的解决了现有的web交互式三维动画的两个问题:
- 通过html本身实现web交互式三维动画的制作,WebGL无需任何浏览器插件支持
- WebGL利用底层的图形硬件可以加速进行图形渲染
3D标准模型的四个齐次矩阵(mat4)
- 投影矩阵
- 模型矩阵
- 视图矩阵
- 法向量矩阵
总结:本节课的知识对于我来说有点难以理解,但还是有收获的,明白了什么是WebGL以及如何使用,它的使用场景,受益匪浅。