WebGL笔记:设置画布底色,从样式中解析颜色并设置画布底色,设置动态画布底色

1 ) 通用结构代码

<canvas id="canvas"></canvas><script>// 获取dom元素const canvas = document.querySelector("#canvas");// 设置宽高canvas.width = 200;canvas.height = 200;// 获取gl三维画笔const gl = canvas.getContext("webgl");
</script>

2 ) 设置画布底色脚本

    gl.clearColor(1, 1, 0, 1); // 设置清空颜色缓冲时的颜色值,即设置预设值,这里是黄色gl.clear(gl.COLOR_BUFFER_BIT); // 使用预设值来清空缓冲, 这里最终渲染出黄色
  • clearColor
  • clear

3 ) 从样式中解析颜色并设置画布底色脚本

const rgbaCss = "rgba(0, 255, 0, 1)"; // 获取css色值, 这里是绿色
const reg = RegExp(/\((.*)\)/); // 解析()里的内容
const rgbaStr = reg.exec(rgbaCss)[1]; // 获取匹配的数值型字符串
const rgba = rgbaStr.split(",").map((n) => parseInt(n)); // 字符串转换成数组
// 解析颜色
const r = rgba[0] / 255;
const g = rgba[1] / 255;
const b = rgba[2] / 255;
const a = rgba[3];
gl.clearColor(r, g, b, a);
gl.clear(gl.COLOR_BUFFER_BIT);

设置动态画布底色脚本

  • 首先需要引入 three.js 的 color 对象
  <script type="module">import { Color } from "https://unpkg.com/three/build/three.module.js";const canvas = document.querySelector("#canvas");canvas.width = 200;canvas.height = 200;// 获取gl三维画笔const gl = canvas.getContext("webgl");// 生成Color对象const color = new Color("rgba(255,0,0,1)");!(function animate() {color.offsetHSL(0.005, 0, 0);const { r, g, b, a } = color;gl.clearColor(r, g, b, a);gl.clear(gl.COLOR_BUFFER_BIT);requestAnimationFrame(animate);})();</script>
  • Color
  • offsetHSL
  • requestAnimationFrame

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

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

相关文章

idea创建springboot项+集成阿里连接池druid

创建项目并集成流程 1&#xff1a;前提准备2&#xff1a;创建springboot项目流程3&#xff1a;集成阿里连接池步骤4&#xff1a;集成swagger方便测试5&#xff1a;书写增删改查进行测试6&#xff1a;项目gitee地址 1&#xff1a;前提准备 准备开发工具&#xff1a;idea java环…

nginx知识点详解:反向代理+负载均衡+动静分离+高可用集群

一、nginx基本概念 1. nginx是什么&#xff0c;做什么事情&#xff1f; Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强。Nginx转为性能优化而开发&#xff0c;能经受高负载考验。支持热部署&#xff0c;启动容易&#xff0c;运…

linux内核分析:线程和进程创建,内存管理

lec18-19:进程与线程创建 lec20-21虚拟内存管理 内核代码,全局变量这些只有一份,但是内核栈有多份,这可能就是linux线程模型1对1模式的由来。通过栈来做的 x86 CPU支持分段和分页(平坦内存模式)两种 分段,选择子那里就有特权标记了

Linux多线程【线程控制】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、线程知识补充1.2、线程私有资源1.3、线程共享资源1.4、原生线程库 2、线程…

GIS跟踪监管系统单元信息更新

GIS跟踪监管系统单元信息更新 单元信息更新。① 新增单元。② 编辑单元。③ 删除单元。物资查询&#xff08;1&#xff09;物资查询与展示。① 几何查询。• 单击查询&#xff1a;• 拉框查询&#xff1a;• 多边形查询&#xff1a;② 物资定位。• 多个物资定位&#xff1a; 单…

关于oss直传

为什么要使用oss直传&#xff1a; 前后端文件传输涉及数据较大&#xff0c;往往会成为很多项目的性能瓶颈。常见的传输方式也有不少&#xff0c;相对来说&#xff0c;OSS直传能够减轻很大压力。 传统方式相比直传OSS&#xff0c;相对来说有三个缺点&#xff1a; 上传慢&…

Visual Studio2019报错

1- Visual Studio2019报错 错误 MSB8036 找不到 Windows SDK 版本 10.0.19041.0的解决方法 小伙伴们在更新到Visual Studio2019后编译项目时可能遇到过这个错误&#xff1a;“ 错误 MSB8036 找不到 Windows SDK 版本 10.0.19041.0的解决方法”&#xff0c;但是我们明明安装了该…

pbjs生成的decode方法decode对象的问题

前端使用了pbjs编译proto文件, 使用编译后的encode方法序列化并post到服务器 contentType设置为application/x-protobuf(也尝试过使用application/octet-stream) 服务端接收到的二进制数据长这样, b\n\x03xxx\x12\x03p2p \xfb\xb2((\x81\xb6(B\t\xe7\x9a\x84\xe8\x90\xa8\xe8\…

智慧公厕:不放过任何“卫生死角”,为公共厕所装上“净化系统”。

#智慧公厕[话题]# #智慧公厕系统[话题]# #智慧公厕管理系统[话题]# #智慧公厕设备[话题]# #智慧公厕厂家[话题]# 在社会活动中&#xff0c;公共厕所是我们经常使用和停留的场所。然而&#xff0c;由于传统公共厕所的粗放式管理&#xff0c;导致卫生情况差、设备不齐全、配置破…

MySql中分割字符串

MySql中分割字符串 在MySql中分割字符串可以用到SUBSTRING_INDEX&#xff08;str, delim, count&#xff09; 参数解说       解释 str         需要拆分的字符串 delim         分隔符&#xff0c;通过某字符进行拆分 count          当 count 为正数&…

Learn Prompt-ChatGPT 精选案例:内容总结

ChatGPT 可以通过分析内容并生成一个浓缩版本来总结文本。这对节省时间和精力很有帮助&#xff0c;特别是在阅读长篇文章、研究论文或报告时。 通用总结​ 你所要做的就是把具体的文字复制并粘贴到提示中&#xff0c;并要求ChatGPT对所选文本进行简化总结。这里我们参考opena…

mac jdk,git,idea安装

根目录创建data文件夹 sudo vim /etc/synthetic.conf data /Users/simon/data 保存重启jdk下载安装 官网(太慢)&#xff1a; https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 国内&#xff1a; http://www.codebaoku.com/jdk/jdk-oracle-jdk1-…

Linux的调试工具 - gdb(超详细)

Linux的调试工具 - gdb 1. 背景2. 开始使用指令的使用都用下面这个C语言简单小代码来进行演示&#xff1a;1. list或l 行号&#xff1a;显示文件源代码&#xff0c;接着上次的位置往下列&#xff0c;每次列10行。2. list或l 函数名:列出某个函数的源代码。3. r或run: 运行程序。…

Java进化史:从Java 8到Java 17的语言特性全解析

文章目录 Java 8&#xff1a;引入Lambda表达式和Stream APILambda表达式Stream API Java 9&#xff1a;模块化系统模块Jigsaw项目 Java 10&#xff1a;局部变量类型推断Java 11&#xff1a;引入HTTP客户端HTTP客户端 Java 12&#xff1a;引入Switch表达式Switch表达式 Java 13到…

微服务架构介绍

系统架构的演变 1、技术架构发展历史时间轴 ①单机垂直拆分&#xff1a;应用间进行了解耦&#xff0c;系统容错提高了&#xff0c;也解决了独立应用发布的问题&#xff0c;存在单机计算能力瓶颈。 ②集群化负载均衡可有效解决单机情况下并发量不足瓶颈。 ③服务改造架构 虽然系…

Android10 SystemUI系列 需求定制(一)状态栏控制中心默认tile定制属性适配

一、前言 SystemUI 所包含的界面和模块比较多,这一节主要分享一下控制中心默认tile 列表的实现,通过配置可以实现 下拉状态栏,控制中心默认的tile显示 二、准备工作 按照惯例先找一下控制中心的代码,主要在下面这个路径下 frameworks/base/packages/SystemUI/src/com/andr…

Spring修炼之路--基础知识

一、核心概念 1.1软件模块化 软件模块化是一种软件开发的设计模式&#xff0c;它将一个大型的软件系统划分成多个独立的模块&#xff0c;每个模块都有自己的功能和接口&#xff0c;并且能够与其他模块独立地工作1. 软件模块化设计可以使软件不至于随着逐渐变大而变得不可控&am…

【ICASSP 2023】ST-MVDNET++论文阅读分析与总结

主要是数据增强的提点方式。并不能带来idea启发&#xff0c;但对模型性能有帮助 Challenge&#xff1a; 少有作品应用一些全局数据增强&#xff0c;利用ST-MVDNet自训练的师生框架&#xff0c;集成了更常见的数据增强&#xff0c;如全局旋转、平移、缩放和翻转。 Contributi…

Vulnhub实战-DC9

前言 本次的实验靶场是Vulnhub上面的DC-9&#xff0c;其中的渗透测试过程比较多&#xff0c;最终的目的是要找到其中的flag。 一、信息收集 对目标网络进行扫描 arp-scan -l 对目标进行端口扫描 nmap -sC -sV -oA dc-9 192.168.1.131 扫描出目标开放了22和80两个端口&a…

《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积

6.1.1 不变性 平移不变性&#xff08;translation invariance&#xff09;&#xff1a; 不管检测对象出现在图像中的哪个位置&#xff0c;神经网络的前面几层应该对相同的图像区域具有相似的反应&#xff0c;即为“平移不变性”。 局部性&#xff08;locality&#xff09;&…