小白学-WEBGL

第一天:

1.canvas和webgl的区别

  Canvas 和 WebGL 都是用于在网页上绘制图形的技术,它们通过浏览器提供的 API 使开发者能够创建丰富的视觉内容,但它们的工作原理和用途有所不同。

Canvas

  Canvas API 提供了一个通过 JavaScript 和 HTML <canvas> 元素绘制 2D 图形的方法。它是一个由网页浏览器渲染的矩形区域,你可以通过 JavaScript 动态地绘制其中的图像(如线条、形状、图像等)。Canvas 适用于较简单的图形和动画,以及图像处理和游戏的 2D 渲染。

  • 2D 绘图:Canvas API 主要关注于 2D 图形的绘制。
  • 即时渲染:绘制操作立即执行,不涉及场景或对象的概念。
  • 简单易用:API 相对简单,容易上手,适合快速开发简单的图形应用。

WebGL

  WebGL(Web Graphics Library)是一个 JavaScript API,允许在不需要任何插件的情况下,在 Web 浏览器中使用 GPU 加速的方式进行 3D 绘图。WebGL 是 OpenGL ES 的一个绑定(即一个低级图形 API 的 Web 版本),它允许开发者创建复杂的 3D 图形和效果。

  • 3D 绘图:WebGL 提供了创建和操纵在浏览器中渲染的复杂 3D 图形的能力。
  • GPU 加速:利用用户的图形处理器(GPU),可以实现高性能的图形渲染。
  • 复杂度高:由于提供了对底层图形硬件的直接访问,因此比 Canvas API 更复杂,学习曲线更陡峭。

关键区别

  • 维度和性能:Canvas 更适合 2D 图形和简单动画,而 WebGL 专注于更复杂的 3D 渲染和高性能图形。
  • API 复杂性:Canvas 的 API 相对简单易学,而 WebGL 提供了更接近硬件的控制,因此更为复杂。
  • 使用场景:对于需要绘制简单图形或处理图像的应用,Canvas 可能是更好的选择。对于需要复杂三维效果、高性能渲染的应用,WebGL 将是更合适的技术。

2.什么是着色器?

着色器(Shader)是一种用于在图形处理器(GPU)上执行的小程序,专门用于图形渲染的计算。它们是现代图形API(如OpenGL、DirectX)和图形渲染管线的核心组件。着色器使得开发者能够对渲染过程中的顶点、像素(片段)、纹理等进行高度控制和自定义,从而产生各种视觉效果。主要有以下几种类型:

  1. 顶点着色器(Vertex Shaders):处理顶点数据,如位置、颜色、纹理坐标等。它运行在渲染流程的早期,负责将3D坐标转换为另一种3D坐标,同时进行一些顶点级别的处理。

  2. 片段着色器(Fragment Shaders)/像素着色器(Pixel Shaders):处理渲染到屏幕上每个像素的颜色和其他属性。它决定了最终像素的颜色值,包括贴图、阴影、光照效果等。

  3. 几何着色器(Geometry Shaders):介于顶点着色器和片段着色器之间,可以生成从一个顶点到另一个顶点的新图形。

  4. 曲面细分着色器(Tessellation Shaders):可以根据某些规则增加几何体的细节或顶点数量,通常用于实现物体表面的平滑渲染。

  5. 计算着色器(Compute Shaders):并不直接参与图形渲染,而是用于处理非图形的通用计算任务,如物理模拟、图像处理等。

3.绘制一个点的流程

一个个像素

第二天

1.canvas坐标系

canvas坐标系webgl三维坐标系

2.绘制一个水平移动的点

3.声明attribute 变量:只能在顶点着色器使用

3.1.声明变量attribute

3.2attribute获取变量

3.3通过鼠标控制绘制

第三天

1.改变点的颜色

1.1使用uniform 变量

通过添加uniform设置变量

给uniform变量赋值

gl.uniform4f(uColor,1.0,0.0,0.0,1.0)

使用uniform的需要设置精度

precision mediump float;

既可以在顶点着色器使用也可以在片源着色器使用,但是顶点着色器不能使用顶点坐标

uniform 变量的使用流程

2使用缓冲区对象-绘制多个点

2.1什么是缓存区对象?

缓冲区对象是WebGL系统中的一块内存区域,可以一次性地向缓冲区对象中填充大量的顶点数据,然后将这些数据保存在其中,供顶点着色器使用

2.2Float32Array是类型化数组

在 webgl 中,需要处理大量的相同类型数据,所以引入类型化数组,这样程序就可以预知到数组中的数据类型,提高性能。

2.3绘制流程

 

2.4多缓存区和数据偏移

 流程和aPosition一样

3. 多种图形绘制

4.图形缩放-着色器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/725444.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【STM32-ST-Link】

STM32-ST-Link ■ ST-Link简介■ ST-Link驱动的安装。■ ST-Link编程软件(MDK)配置。■ ST-Link固件升级方法 ■ ST-Link简介 由于德产 J-LINK 价格非常昂贵&#xff0c; 而国产 J-LINK 因为版权问题将在万能的淘宝销声匿迹。 所以我们有必要给大家介绍 JTAG/SWD 调试工具中另…

PHP转Go系列 | 字符串的使用姿势

大家好&#xff0c;我是码农先森。 输出 在 PHP 语言中的输出比较简单&#xff0c;直接使用 echo 就可以。此外&#xff0c;在 PHP 中还有一个格式化输出函数 sprintf 可以用占位符替换字符串。 <?phpecho 码农先森; echo sprintf(码农:%s, 先森);在 Go 语言中调用它的输…

STM32通过I2C软件读写MPU6050

文章目录​​​​​​​ 1. MPU6050 1.1 运动学概念 1.2 工作原理 2. 参数 2.1 量程选择 2.2 I2C从机地址配置 3. 硬件电路 4. 框架图 5. 软件和硬件波形对比 6. 软件I2C读写MPU6050 6.1 程序整体构架 6.2 一些需要注意的点&#xff1a; 6.3 MPU6050初始化配置 6…

【Mac】KeyKey — Typing Practice for mac软件介绍及安装

软件介绍 KeyKey 是一款为 macOS 设计的盲打练习软件&#xff0c;旨在帮助用户提高打字速度和准确性。它通过提供多种练习模式和实时反馈&#xff0c;使用户能够逐渐掌握触摸打字技能。以下是 KeyKey 的主要功能和特点&#xff1a; 主要功能和特点 多语言支持&#xff1a; …

谈谈面试常考题:懒加载,防抖,节流(方法实现详解)

前言 最近在学习中确实收获了挺多东西&#xff0c;其中我觉得有必要拿来进行分享一下的就是懒加载了&#xff0c;还有相关的防抖和节流。因为在浏览器中这些都是属于很常见的性能优化&#xff0c;面试也是常考题。话不多说&#xff0c;速度发车。 什么是懒加载&#xff1f;懒…

Java宝藏实验资源库(2)字节流

一、实验目的 掌握输入输出流的基本概念。掌握字节流处理类的基本结构。掌握使用字节流进行输入输出的基本方法。 二、实验内容、过程及结果 *17.10 (Split files) Suppose you want to back up a huge file (e.g., a 10-GB AVI file) to a CD-R. You can achieve it by split…

计算机毕业设计Python+Vue.js+Flask+Scrapy电影大数据分析 电影推荐系统 电影爬虫可视化 电影数据分析 大数据毕业设计 协同过滤算法

开发技术 协同过滤算法、机器学习、vue.js、echarts、Flask、Python、MySQL 创新点 协同过滤推荐算法、爬虫、数据可视化 补充说明 两种Python协同过滤推荐算法集成 (ItemCF推荐算法 和 UserCF 推荐算法) 2.专业美工整体设计的细腻的酷黑主题&#xff0c;前后端分离一体化系统&…

Opencv学习项目1——pytesseract

最近开始学习opencv使用&#xff0c;跟着b站一起做实战项目&#xff0c;跟大家分享一下学习成果&#xff0c;大佬勿喷 项目演示 pytesseract 是一个用于文字识别&#xff08;OCR&#xff0c;光学字符识别&#xff09;的 Python 库&#xff0c;它是 Tesseract OCR 引擎的 Python…

探究 IP 地址被网站封禁的原因

在我们登录各种网站、APP浏览时&#xff0c;可能会遇到 IP 地址被某些网站封禁的情况。很多人奇怪这是为什么呢&#xff1f; 首先&#xff0c;违反网站的使用规则是比较常见的原因之一。比如&#xff0c;频繁发送垃圾邮件、恶意评论、进行网络攻击或试图破解网站的安全机制等不…

关于Windows系统下redis的闪退问题。

一、问题分析 首先&#xff0c;有这个问题的一般是如下操作&#xff1a; 1、在运行项目时发现无法连接到redis服务器&#xff0c; 2、进入Redis安装目录(如图)——>鼠标双击打开redis-server.exe&#xff0c;然后闪退&#xff0c; 3、运行redis-cli时提示&#xff1a;“由…

kafka学习笔记07

Kafka高可用集群搭建节点需求规划 开放端口。 Kafka高可用集群之zookeeper集群搭建环境准备 删除之前的kafka和zookeeper。 重新进行环境部署&#xff1a; 我们解压我们的zookeeper: 编辑第一个zookeeper的配置文件: 我们重复类似的操作&#xff0c;创建三个zookeeper节点: 记…

Android Glide, first start based on loadThumbnail, Kotlin(二)

Android Glide, first start based on loadThumbnail, Kotlin&#xff08;二&#xff09; Android Glide, first start based on loadThumbnail, Kotlin&#xff08;一&#xff09;中有个小问题&#xff0c;通过loadThumbnail()采集到的缩略图真的就是整张图片的完整缩略图&…

PTP简介及Linux phy ptp驱动实现

1、PTP简介 PTP(precision time protocol)精确时间协议&#xff0c;是一种时间同步的协议&#xff0c;对应 IEEE 1588 标准&#xff0c;是基于网络数据包的一种时间同步协议&#xff0c;1588v2的同步精度可以达到ns级&#xff0c;但1588协议对硬件有依赖。 2、PTP原理 时间同…

Part 6.2.3 欧拉函数

欧拉函数φ(x) 表示了小于x的数字中&#xff0c;与x互质的数字个数。 关于欧拉函数的基本知识>欧拉函数的求解< [SDOI2008] 仪仗队 题目描述 作为体育委员&#xff0c;C 君负责这次运动会仪仗队的训练。仪仗队是由学生组成的 N N N \times N NN 的方阵&#xff0c;…

使用Docker在Mac上部署OnlyOffice,预览编辑word、excel、ppt非常好

前端编辑word、ppt文档&#xff0c;开源免费方案并没有找到合适的&#xff0c;像wps、石墨文档都是自研的方案。实现过程中wps采用的svg方案&#xff0c;而石墨文档采用的是canvas&#xff0c;它们均是自己来实现编辑器&#xff0c;不依赖浏览器提供的编辑器&#xff08;conten…

如何用python调用C++处理图片

一. 背景 用pyhton可直接调用C&#xff0c;减少重写的工作量&#xff1b;部分逻辑运算&#xff0c;C的执行效率高&#xff0c;可进行加速。 下面就一个简单的C滤镜&#xff08;彩色图转灰度图&#xff09;为例&#xff0c;展示python调用C 二. 代码实现 代码结构如下&#x…

Windows桌面运维----第四天

1、U盘故障打不开&#xff1a; 操作方式&#xff1a;WinR打开运行&#xff0c;输入cmd确定&#xff0c;在&#xff08;C:\Users\Administrator>&#xff09;后输入chkdsk,空格&#xff0c;输入U盘盘符&#xff0c;例如F:/F&#xff0c;回车&#xff0c;等待修复完成。 2、…

韩国裸机云站群服务器托管租用方案

随着网络技术的飞速发展&#xff0c;站群服务器在网站运营中扮演着越来越重要的角色。韩国裸机云站群服务器&#xff0c;以其独特的优势&#xff0c;如地理位置优越、价格相对较低、技术实力雄厚等&#xff0c;吸引了众多企业的关注。本文将为您详细介绍韩国裸机云站群服务器的…

【TB作品】MSP430G2553,单片机,口袋板, 现场数据采集装置设计

题2 现场数据采集装置设计 便携式数据采集装置将在现场采集到的数据装入装置的内部数存贮器&#xff0c;以待送实验室或试验中心的计算机进行分析处理&#xff0c;由于现场不一定有交流电供电&#xff0c;而且采集到的数据必须保存到送实验室&#xff0c;因此装置必须以电池或蓄…

红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题,红米手机如何开启谷歌框架

红米手机RedNot11无法使用谷歌框架&#xff0c;打开游戏闪退的问题&#xff0c; 1.问题描述2.问题原因3.解决方案3.1配置谷歌框架&#xff1a;3.1软件优化 4.附图 1.问题描述 红米手机打开安卓APP没有广告&#xff0c;直接闪退&#xff0c;无法使用谷歌框架 异常关键词中包含&…