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盲盒。
相关文章
|
5月前
|
开发者 C# 容器
【独家揭秘】当WPF邂逅DirectX:看这两个技术如何联手打造令人惊艳的高性能图形渲染体验,从环境搭建到代码实践,一步步教你成为图形编程高手
【8月更文挑战第31天】本文通过代码示例详细介绍了如何在WPF应用中集成DirectX以实现高性能图形渲染。首先创建WPF项目并使用SharpDX作为桥梁,然后在XAML中定义承载DirectX内容的容器。接着,通过C#代码初始化DirectX环境,设置渲染逻辑,并在WPF窗口中绘制图形。此方法适用于从简单2D到复杂3D场景的各种图形处理需求,为WPF开发者提供了高性能图形渲染的技术支持和实践指导。
354 0
|
7月前
|
移动开发 JSON JavaScript
一篇文章讲明白Egret白鹭H5小游戏开发入门(一)
一篇文章讲明白Egret白鹭H5小游戏开发入门(一)
137 1
|
8月前
微信小游戏制作工具关于游戏屏幕适配,看这篇就够了!
微信小游戏制作工具关于游戏屏幕适配,看这篇就够了!
279 0
|
移动开发 数据可视化 JavaScript
谈一谈|小白如何使用egret
谈一谈|小白如何使用egret
261 0
|
缓存 JavaScript 算法
初识WebGL 2 | 青训营笔记
上期简单介绍了webgl的基本使用流程,并试着绘制了一个三角形。这期我们再深入了解一下这个图形处理工具。
初识WebGL 2 | 青训营笔记
|
缓存 移动开发 前端开发
WebGL | 青训营笔记
WebGL | 青训营笔记
113 0
WebGL | 青训营笔记
|
移动开发 前端开发 图形学
小游戏开发 | 青训营笔记
小游戏开发 | 青训营笔记
110 0
小游戏开发 | 青训营笔记
|
图形学
egret连连看项目实战之二(礼盒动画)
egret连连看项目实战之二(礼盒动画)
egret连连看项目实战之二(礼盒动画)
|
Web App开发 前端开发 图形学
Unity实战问题-WebGL问题集锦-上篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
457 1
|
前端开发 JavaScript 异构计算
WebGL基础笔记
WebGL基础笔记
204 0