Skip to main content

WebGL

What

什么是WebGL

WebGL是 OpenGL 与 JS的绑定,也可以理解成通过JS来操作OpenGL。

什么是OpenGL

OpenGL是专门用于渲染2D、3D适量图形的跨语言,跨平台的应用程序编程接口(是一套完整的SDK),可以看作它是一个集多款语言为一身的来操作显卡绘图的中间层

Why

为什么用 WebGL

更快

首先我们都知道CPU与GPU最根本的区别就是,CPU什么都干,GPU仅专注于图像相关。常用的Canvas2D实际上是调用的CPU来做图形计算,而WebGL因为基于的是OpenGL,也就是说用GPU来计算,那么谁的效率高,谁更快就显而易见:

  • Canvas2D:CPU -> 内存 -> 显示 (软件加速)
  • WebGL: GPU-> 显存 -> 显示 (硬件加速)

How

基础知识

坐标系

image-20220729113035915

在3d空间当中,它的取值范围都是 -1 到 1,超过这个值将无法渲染

左手坐标系

  • 相关应用:DirectX、BabylonJS、Unity、UE4
  • Z值

右手坐标系

  • 应用于:WebGL、ThreeJS、3DMax
  • Z值越大,摄像机离图像越远

线性代数

线性代数就是将几何与代数统一

Vector - 矢量、向量

  • 点:point

  • 线:line

  • 面:face、plane

  • 体:geometry

  • 方向:angle

  • 长度:length

  • 点乘:dot

  • 叉乘:cross

Matrix - 矩阵

矩阵用于控制物体的、

  • 网格:mesh

    image-20220729120734035

    • mesh = new Mesh(geomery, material)
    • 着色(material)后的体(geometry),称之为mesh
  • 乘积:multiply

    • 初始化:compose(postion, rotation, scale)
    • 矩阵的计算是有顺序的,根据顺序即可以通过计算将模型初始化
  • 转置: transpose

线性变换、仿射变换

Matrix Vector 既 矩阵向量 可以实现线性变换

  • 平移矩阵: postion
  • 旋转矩阵: rotation
  • 缩放矩阵: scale

Transformation - 变换形式

  • 移动
  • 旋转
  • 缩放

硬件加速

image-20220729120434138

着色器

渲染管线的过程中,允许对顶点和片元(像素)进行编程的行为,称为着色器,着色器是直接执行在GPU上的代码。

  • 定点着色器
  • 片元着色器

参阅文献