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高多了。就看你选择让程序员自己累还是让计算机累了。

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
8月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL下载与安装
本文介绍了MySQL的下载与安装流程(2025.4.29,作者:blue)。主要内容包括:1) 从官方地址下载MySQL;2) 解压文件并配置环境变量;3) 注册MySQL服务并通过命令行验证;4) 启动和停止MySQL服务;5) 修改默认账户密码;6) 登录MySQL。通过详细步骤和截图,帮助用户顺利完成安装与初始配置。
1053 13
|
机器学习/深度学习 编解码 Java
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
《YOLO11目标检测创新改进与实战案例》专栏已更新100+篇文章,涵盖注意力机制、卷积优化、检测头创新、损失与IOU优化、轻量级网络设计等多方面内容。每周更新3-10篇,提供详细代码和实战案例,帮助您掌握最新研究和实用技巧。[专栏链接](https://blog.csdn.net/shangyanaf/category_12810477.html)
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
|
物联网 5G 数据中心
超融合网关的应用场景
超融合网关的应用场景
|
安全 小程序 BI
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
针对设备状态不透明、纸质记录效率低、故障报修不及时等设备点巡检的常见问题,可以在草料二维码上自主搭建涵盖点检、巡检、报修、维修、保养等功能的管理系统,无需安装APP,微信扫码就能查看设备档案、用表单替代纸质检查表。
516 1
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
|
监控 JavaScript 应用服务中间件
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
259 0
|
机器学习/深度学习 Python
Python 工具和库:Python 的包管理工具有哪些?如何使用它们安装和管理包?
Python 工具和库:Python 的包管理工具有哪些?如何使用它们安装和管理包?
682 0
|
监控 Java API
SNMP介绍与使用
SNMP(Simple Network Management Protocol)是一种用于网络管理的标准协议,它可以让管理者监控和管理网络设备和应用程序。SNMP使用客户端-服务端模型,其中网络设备和应用程序充当服务端,而管理者则充当客户端。
542 0
|
Java Scala
idea报错“Static methods in interface require -target:jvm-1.8”
idea报错“Static methods in interface require -target:jvm-1.8”
186 0
|
Python Windows
Python Matplotlib入门
Matplotlib_Study01 极坐标 雷达图代码:# 标签labels = np.array(['艺术A', '调研I', '实际R', '常规C', '企业E', '社会S'])# 数据个数dataLenth = 6# 数据data = np.array([1, 4, 3, 6, 4, 8])# 生成从0开始到6.28的6个并且不可能包括6.28 的一个数组# 这里又将原数组赋给...
299 0
|
机器学习/深度学习 Web App开发 数据挖掘
经典神经网络论文超详细解读(七)——SENet(注意力机制)学习笔记(翻译+精读+代码复现)
经典神经网络论文超详细解读(七)——SENet(注意力机制)学习笔记(翻译+精读+代码复现)
4497 1
经典神经网络论文超详细解读(七)——SENet(注意力机制)学习笔记(翻译+精读+代码复现)