DAY14 WebGL与动画实现 | 青训营笔记

120 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第14天

初识WebGL

什么是WebGL

  • WebGL就是可以帮助你在浏览器上创建和渲染三维图形的一个API集,也就是专门用于Web页面的OpenGL

WebGL起源

image.png

  • 如上图所示,现在WebGL有两个版本,分别是WebGL 1.0和WebGL 2.0,它们都起源于OpenGL 1.5,但WebGL 1.0基于OpenGL ES 2.0,OpenGL ES 2.0又是OpenGL 2.0的子集
  • 而WebGL 2.0基于OpenGL ES 3.0,OpenGL ES 3.0又是OpenGL 3.3的子集
  • 上图中有一句话"蓝色区域中版本支持着色器语言",着色器语言(shading language)它是一种类似于C语言可以实现精美视觉效果的编程语言,WebGL使用的着色器语言与OpenGL一样也是 GLSL ES

WebGL特点与优势

  1. WebGL内嵌在浏览器中,不需要安装插件和库就可以直接使用
  2. 由于WebGL基于浏览器,不是基于操作系统。所以可以直接在多种平台运行WebGL程序
  3. WebGL程序由HTML和JavaScript文件组成,可以直接发送给对方在浏览器中展示
  4. 不需要搭建开发环境,可以直接通过文本编辑器开发
  5. 由于WebGL继承自OpenGL,所以OpenGL相关资料都可以拿来参考

总结

  • WebGL是一门非常强大的语言,也是一门需要花费大量精力去掌握的语言,随着5G时代的来临,工业4.0的到来,智慧城市的创建,物联网的快速发展,智能可视化的兴起等这些契机的出现,三维图形展示与WebGL必将越来越受重视,越来越多的被使用。

Modern Graphics System

  • 光栅(Raster):几乎所有的现代图形系统都是基于光栅来绘制图形的,光栅就是指构成图像的像素阵列。
  • 像素(Pixel):一个像素对应图像上的一个点,它通常保存图像上的某个具体位置的颜色等信息。
  • 帧缓存(Frame Buffer):在绘图过程中,像素信息被存放于帧缓存中,帧缓存是一块内存地址。
  • CPU (Central Processing Unit):中央处理单元,负责逻辑计算。
  • GPU (Graphics Processing Unit):图形处理单元,负责图形计算。

CPU vs GPU

  • GPU由大量的小运算单元构成
  • 每个运算单元只负责处理很简单的计算每个运算单元彼此独立
  • 因此所有计算可以并行处理

WebGL Startup

  1. 创建WebGL上下文
  2. 创建WebGL Program
  3. 将数据存入缓冲区
  4. 将缓冲区数据读取到GPU
  5. GPU执行WebGL程序,输出结果 image.png

Transforms

image.png

3D Matrix

3D标准模型的四个齐次矩阵 (mat4)

  1. 投影矩阵Projection Matrix
  2. 模型矩阵Model Matrix
  3. 视图矩阵View Matrix
  4. 法向量矩阵 Normal Matrix