学习WebGL|青训营

87 阅读2分钟

这是我来参加[第五届青训营]笔记创作活动的第十六天。

今天跟着月影老师学习了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):图形处理单元,负责图形计算 image.png

WebGL绘图流程

  • 创建webGL上下文
  • 创建webGL Program
  • 将数据存入缓冲区
  • 将缓冲区数据读到GPU
  • GPU执行webGL程序,输出结果

image.png

Transforms image.png image.png

WebGL完美的解决了现有的web交互式三维动画的两个问题:

  1. 通过html本身实现web交互式三维动画的制作,WebGL无需任何浏览器插件支持
  2. WebGL利用底层的图形硬件可以加速进行图形渲染

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

  • 投影矩阵
  • 模型矩阵
  • 视图矩阵
  • 法向量矩阵

总结:本节课的知识对于我来说有点难以理解,但还是有收获的,明白了什么是WebGL以及如何使用,它的使用场景,受益匪浅。