小白学-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.图形缩放-着色器

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xtuner微调

环境安装 studio-conda xtuner0.1.17 conda activate xtuner0.1.17 进入家目录 &#xff08;~的意思是 “当前用户的home路径”&#xff09; cd ~ 创建版本文件夹并进入&#xff0c;以跟随本教程 mkdir -p /root/xtuner0117 && cd /root/xtuner0117 拉取 0.1.17 的版…

Java IO模型BIO、NIO、AIO介绍

第一章 BIO、NIO、AIO课程介绍 1.1 课程说明 在java的软件设计开发中&#xff0c;通信架构是不可避免的&#xff0c;我们在进行不同系统或者不同进程之间的数据交互&#xff0c;或者在高并发下的通信场景下都需要用到网络通信相关的技术&#xff0c;对于一些经验丰富的程序员来…

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

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

自然语言处理概述

目录 1.概述 2.背景 3.作用 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 5.1.十个应用场景 5.2.文本分类 5.2.1.一般流程 5.2.2.示例 6.使用示例 7.总结 1.概述 自然语言处理&#xff08;NLP&#xff09;是计算机科学、人工智能和语言学的交叉领域&#xff0c;旨在实…

Redis 主从同步

主从同步 很多企业没有使用Redis的集群&#xff0c;但是至少都做了主从。有了主从&#xff0c;当master挂掉的时候&#xff0c;运维让从库过来接管&#xff0c;服务就可以继续&#xff0c;否则master需要经过数据恢复和重启的过程&#xff0c;可能会拖很长时间&#xff0c;影响…

Git pull下来时合并分支

执行git pull时报错如下 解决方法&#xff1a; VSCode git中手动选取分支&#xff0c;完成合并 git add .; git commit -m “resolve”git push -u origin main

Java零基础之多线程篇:线程的多种创建方式

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

如何配置taro

文章目录 step1. 全局安装wepacksetp2. 使用npm安装tarostep3. 项目初始化 使用taro时需要在本地配置好nodejs环境&#xff0c;关于如何配置nodejs可参考我的这篇博文 如何配置nodejs环境 step1. 全局安装wepack 使用指令npm install webpack -g即可 安装完成后可看到有wepa…

Socket 原理和思考

众所周知Reactor是一种非常重要和应用广泛的网络编程模式&#xff0c;而Java NIO是Reactor模式的一个具体实现&#xff0c;在Netty和Redis都有对其的运用。而不管上层模式如何&#xff0c;底层都是走的Socket&#xff0c;对底层原理的了解会反哺于上层&#xff0c;避免空中楼阁…

前端 JS 经典:数字变化动画

1. 需求 给你一个数字&#xff0c;当这个数字变化时&#xff0c;有一个动画的过渡效果。 2. 思路 首先我们要知道两个数字变化需要多少秒&#xff0c;然后变化的范围&#xff0c;算出变化的速度。记住开始变化的时间&#xff0c;然后通过 requestAnimationFrame 函数&#x…

centos 7.8 安装sql server 2019

1.系统环境 centos 7.8 2.数据库安装文件准备 下载 SQL Server 2019 (15.x) Red Hat 存储库配置文件 sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo 采用yum源进行不安装下载,这时yum 会自动检测…

算法竞赛数论杂题

menji 和 gcd 题目&#xff1a; 一开始以为是只有l不确定&#xff0c;r是确定的&#xff0c;这样的话我们可以枚举r的所有约数&#xff0c;然后对其每个约数x进行判断&#xff0c;判断是否满足题意&#xff0c;具体做法是先让l % x如果 0则该约数可行&#xff0c;如果不可行…

【机器学习】:线性回归模型学习路线

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

教你python自动识别图文验证码的解决方案!

验证码识别解决方案 对于web应用程序来讲&#xff0c;处于安全性考虑&#xff0c;在登录的时候&#xff0c;都会设置验证码&#xff0c;验证码的类型种类繁多&#xff0c;有图片中辨别数字字母的&#xff0c;有点击图片中指定的文字的&#xff0c;也有算术计算结果的&#xff0…

成都爱尔李晓峰主任讲解眼角多出一层“膜”是什么?怎么治

眼角边突然发现长出来一层皮一层膜一样的东西&#xff0c;肉色挡在眼白上呈三角形&#xff0c;这到底是什么&#xff1f; 一种常见眼科疾病“翼状胬肉”&#xff0c;因其形状像昆虫的翅膀而得名的&#xff0c;它是受外界剌激而引起的一种慢性炎症性病变。 覆盖在眼睛表面的那…

JUC并发编程第十三章——读写锁、邮戳锁

本章路线总纲 无锁——>独占锁——>读写锁——>邮戳锁 1 关于锁的面试题 你知道Java里面有那些锁你说说你用过的锁&#xff0c;锁饥饿问题是什么&#xff1f;有没有比读写锁更快的锁StampedLock知道吗&#xff1f;&#xff08;邮戳锁/票据锁&#xff09;ReentrantR…

使用自定义注解进行权限校验

一&#xff0c;前言 对于一些重复性的操作我们可以用提取为util的方式进行处理&#xff0c;但也可以更简便一些&#xff0c;比如自定义个注解进行。选择看这篇文章的小伙伴想必都对注解不陌生&#xff0c;但是可能对它的工作原理不太清楚。这里我们用注解实现对接口的权限校验…

Wireshark v4 修改版安装教程(免费开源的网络嗅探抓包工具)

前言 Wireshark&#xff08;前称Ethereal&#xff09;是一款免费开源的网络嗅探抓包工具&#xff0c;世界上最流行的网络协议分析器&#xff01;网络封包分析软件的功能是撷取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark网络抓包工具使用WinPCAP作为…

基于GWO-CNN-LSTM数据时间序列预测(多输入单输出)-多维时间序列模型-MATLAB实现

基于GWO-CNN-LSTM数据时间序列预测(多输入单输出)-多维时间序列模型-MATLAB实现 基于灰狼优化&#xff08;Grey Wolf Optimizer, GWO&#xff09;、卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;和长短期记忆网络&#xff08;Long Short-Term Memor…

【计算机视觉(11)】

基于Python的OpenCV基础入门——图像梯度变换 图像梯度变换Sobel算子Scharr算子Laplacian算子 图像梯度变换的代码实现以及效果图 图像梯度变换 图像梯度变换可以用于边缘检测、特征提取、增强图像和压缩图像等多种任务。图图像梯度可以把图像看成二维离散函数&#xff0c;图像…