前端与WebGL|青训营笔记

66 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天

Modern Graphics System

光栅(Raster):几乎所有的现代图形系统都是基于光栅来绘制图形的,光栅就是指构成图像的像素阵列

像素(Pixel):一个像素对于图像上的一个点,它通常保存图像上的某个具体位置的颜色等信息

帧缓存(Frame Buffer):在绘图过程中,像素信息被存放于帧缓存中,帧缓存是一块内存地址

CPU(Central Processing Unit):中央处理单元,负责逻辑计算

GPU(Graphics Processing Unit):图形处理单元,负责图形计算

步骤

轮廓提取、光栅化、帧缓存、渲染

GPU

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

WebGL Startup

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

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

投影矩阵Projection Matrix、模型矩阵Model matrix、视图矩阵View Matrix、法向量矩阵Normal Matrix

总结

我看MDN文档上面对WebGL的解释是WebGL是一个Javascript API,可以在任何兼容的Web浏览器中渲染高性能的交互式3D和2D图形,而无需使用插件。WebGL通过引入一个于OpenGL ES 2.0非常一致的API来做到这一点,并且可以在canvas标签中使用(canvas标签也被Canvas API用于在网页上进行2D图形处理)。这种一致性使API可以利用用户设备提供的硬件图形加速。

WebGL本质上是基于光栅化的API,而不是基于3D的API,WebGL只关注两个方面,即投影矩阵的坐标和投影矩阵的颜色。使用WebGL程序的任务就是实现具有投影矩阵坐标和颜色的WebGl对象,可以通过着色器来实现。