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

92 阅读2分钟

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

传统的web,涉及到复杂的图形渲染效率不高,在web上有许多的工具api,浏览器提供了svg和canvas,canvas有3种上下文,canVas2D/3D,3D有两个标准:webGL 和正在推进的WebGPU webGL是比较早的标准,是openGL的子集。两者的思想都是一样的例如:渲染管线,利用GPU来绘图。GPU运算是由高并发性的。 GPU!=WebGL != 3D 现代的图形系统概念:

系统概念.png

轮廓提取平面使用三角网格化方法 3D有各种网格化的方法,常见的也是三角网格化。 网格图源进行光栅化,点阵数据送到帧缓存之中,读取内容再进行显示渲染

把数据处理成像素阵列过程叫做渲染管线。不同图形系统可以定制不同渲染管线。The Pipeline。 CPU VS GPU 一个管道对应一个核。同时处理多个任务,效率比较低。 GPU由小运算单元构成:

GPU.png webGL,OpenGL图形渲染的引擎,openGL ES在Web上的版本。

使用WebGL的准备

start.png 渲染管线--webGL Program GLSL语言编写 着色,透明度 处理代码着色器 数据送入缓冲区,读取到GPU,执行web GL program。

步骤:

获取Canvas对象,创建WebGL上下文,考虑兼容性: context.png 写着色器 顶点着色器Vertex Shader -处理图形轮廓 buffer.png 片段着色器Fragment Shader- 光栅化,片段着色器处理颜色 在web GL中w我们使用rgba来表示颜色,区别是webGL可以使用浮点型的数据。 例如图中的:

gl——FragColor = vec4(1.0, 0.0, 0.0 ,1.0)
// 代表红色 不透明的

shader.png 创建Program:

program.png 归一化的,通过顶点坐标描述。 3个顶点同时执行的,着色器执行3次。

bufferGPU.png 最后进行渲染:

output.png

建议有兴趣的可以去看月影老师的专栏: 点击观看「WebGL 与动画实现」资料