WebGL初识1 | 青训营笔记

简介: 今天跟着青训营网课学习了月影大大的“WebGL与动画实现”,感觉打开了新世界的大门,特记笔记来加深印象、巩固学习。


一、Mordern Graphics System现代图形系统


· 光栅:

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

· 像素:

一个像素对应图象是的一个点,它通常保存在图像上的某个具体位置的颜色等信息。

· 帧缓存:

在绘图过程中,像素信息被存放于帧缓存中,帧缓存就是一块内存地址。

· CPU:

中央处理单元,负责逻辑计算

· GPU:

图形处理单元,负责图形计算


二、The Pipeline 图形渲染管线


可以类比活字印刷,是一个流程

image.png

把cpu和gpu的处理核心看成一个管道的话,cpu的管道功能强劲,但是管道数量少,GPU则拥有很多简单的小管道。因而在处理图形渲染这样的工作时,就好比让一堆沙子穿过管道,我们不需要多么高科技的管道,我们要求的管道的数量要多

image.png

三、WebGL Startup


如果我们使用webgl要做什么事?

1.创建webgl上下文

2.创建webgl program

3.将数据存入缓冲区

4.将缓冲区数据读取到GPU

5.GPU执行webgl程序,输出结果

image.png

四、实例演练


1、创建上下文

新版本浏览器如上小图,老版本则要用以前试验的名字

image.png

2、配置着色器

1)Vertex Shader 顶点着色器 处理图形轮廓

image.png

2)片元着色器 处理颜色

image.png

3、创建webgl program

image.png

把着色器都用上


4、Data to Frame Buffer 数据存入缓冲区

image.png

webgl的坐标系如图,跟常见的左手系右手系不大一样。比如现在我们需要创建一个三角形,我们写出了右上方的代码。然后创建缓冲区(右下角代码)


5、缓冲区数据传入GPU

image.png

代码如图,让GPU开始工作


6、最后执行任务

这个三角形就绘制出来了

image.png

绘制一个小小的三角形要这么多代码???!!

一个字——难!

如果用2d来绘制这个三角形,只要这几行就够了

image.png

先别急,我只能说,当你的工作在计算机上足够复杂(比如我要绘制十万个三角形),那webgl的运行效率可就比2d高多了。就看你选择让程序员自己累还是让计算机累了。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
前端开发 API
canvas深入浅出(三)| 小册免费学
所有的内容都是手动绘制还是有点麻烦,好在canvas支持导入图片,createPattern(image, type),该方法接受两个参数。Image 可以是一个 Image 对象的引用,或者另一个 canvas 对象。Type 必须是下面的字符串值之一:repeat,repeat-x,repeat-y 和 no-repeat。
93 0
canvas深入浅出(三)| 小册免费学
|
前端开发 API
canvas深入浅出(二)| 小册免费学
上一节最后我们说了一个绘制曲线的API——arc(那个API并不是专门用来绘制圆形,只是使用曲线可以绘制圆形),他还有一个兄弟——arcTo(x1, y1, x2, y2, r),根据当前描点与给定的控制点1连接的直线,和控制点1与控制点2连接的直线,作为使用指定半径的圆的切线,画出两条切线之间的弧线路径
89 0
canvas深入浅出(二)| 小册免费学
|
存储 前端开发 API
canvas深入浅出(四)| 小册免费学
之前三节我们铺垫了canvas的相关知识,这一节我们来“落地”,实现一个五子棋的小游戏
99 0
|
XML 前端开发 JavaScript
canvas深入浅出(一)| 小册免费学
canvas是为了解决页面只能显示静态图片而出现的一种可以使用JavaScript绘制的HTML标签,它可以接受两个参数width和height(原来有三个,还有一个moz-opaque控制透明度,已经废弃了)
93 0
|
前端开发
前端知识案例学习3-毛玻璃效果
前端知识案例学习3-毛玻璃效果
66 0
前端知识案例学习3-毛玻璃效果
|
缓存 JavaScript 算法
初识WebGL 2 | 青训营笔记
上期简单介绍了webgl的基本使用流程,并试着绘制了一个三角形。这期我们再深入了解一下这个图形处理工具。
初识WebGL 2 | 青训营笔记
|
缓存 移动开发 前端开发
WebGL | 青训营笔记
WebGL | 青训营笔记
103 0
WebGL | 青训营笔记
|
移动开发 前端开发 图形学
小游戏开发 | 青训营笔记
小游戏开发 | 青训营笔记
103 0
小游戏开发 | 青训营笔记
|
存储 缓存 前端开发
几个简单的小例子手把手带你入门webgl(二)
实战——绘制个三角形 在进行实战之前,我们先给你看一张图,让你能大概了解,用原生webgl生成一个三角形需要那些步骤: draw 我们就跟着这个流程图一步一步去操作: 初始化canvas 新建一个webgl画布 <canvas id="webgl" width="500" height="500"></canvas> 创建webgl 上下文: const gl = document.getElementById('webgl').getContext('webgl') 创建着色器程序 着色器的程序这些代码,其实是重复的,我们还是先看下图,看下我们到底需要哪些步骤: shader 那我们就跟着这
几个简单的小例子手把手带你入门webgl(二)
|
缓存 异构计算
几个简单的小例子手把手带你入门webgl(一)
各位同学们大家好,又到了周末写文章的时间,之前群里有粉丝提问, 就是shader不是很理解。然后今天他就来了, 废话不多说,读完今天的这篇文章你可以学到以下几点: 为什么需要有shader ? shader的作用是什么???? shader 中的每个参数到底是什么意思??怎么去用??? 你如果会了,这篇文章你可以不用看👀,不用浪费时间,去看别的文章。如果哪里写的有问题欢迎大家指正,我也在不断地学习当中。 why need shader 这里我结合自己的思考🤔,讲讲webgl的整个的一个渲染过程。 渲染管线 「Webgl」的渲染依赖底层「GPU」的渲染能力。所以「WEBGL」 渲染流程
几个简单的小例子手把手带你入门webgl(一)
下一篇
无影云桌面