(一)如何根据rgba刷成webgl的底色

简介: (一)如何根据rgba刷成webgl的底色


问题

如何根据rgba刷成webgl的底色?

思路

rgba的格式为: rgba(1,1,0,1),可以根据正则,取出括号里面的每一个数字,再进行自己的逻辑处理(只取出不处理也可以),然后实用webgl的.gl.clearColor(r, g, b, a)写入进去。

示例代码

硬编码写入

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>01-刷底色</title>
    <style>
      body {
        margin: 0;
        overflow: hidden;
      }
      #canvas {
        background-color: antiquewhite;
      }
    </style>
  </head>
  <body>
    <canvas id="canvas"></canvas>
    <script>
      const canvas = document.querySelector("#canvas");
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      //二维画笔
      // const gl=canvas.getContext('2d');
      //三维画笔
      const gl = canvas.getContext("webgl");
      //声明颜色 rgba
      gl.clearColor(1, 1, 0, 1);
      //刷底色
      gl.clear(gl.COLOR_BUFFER_BIT);
    </script>
  </body>
</html>

效果:

根据rgba写入

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>01-刷底色</title>
    <style>
      body {
        margin: 0;
        overflow: hidden;
      }
      #canvas {
        background-color: antiquewhite;
      }
    </style>
  </head>
  <body>
    <canvas id="canvas"></canvas>
    <script>
      const canvas = document.querySelector("#canvas");
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      //二维画笔
      // const gl=canvas.getContext('2d');
      //三维画笔
      const gl = canvas.getContext("webgl");
      //声明颜色 rgba
      gl.clearColor(1, 1, 0, 1);
      //刷底色
      gl.clear(gl.COLOR_BUFFER_BIT);
      //css颜色
      const rgbaCss = "rgba(255,100,0,1)";
      //正则
      const reg = RegExp(/\((.*)\)/);
      //捕捉数据
      const rgbaStr = reg.exec(rgbaCss)[1];
      console.log(rgbaStr);
      //加工数据
      const rgba = rgbaStr.split(",").map((n) => parseInt(n));
      console.log(rgba);
      const r = rgba[0] / 255;
      const g = rgba[1] / 255;
      const b = rgba[2] / 255;
      const a = rgba[3];
      //声明颜色 rgba
      gl.clearColor(r, g, b, a);
      //刷底色
      gl.clear(gl.COLOR_BUFFER_BIT);
    </script>
  </body>
</html>

效果:



大功告成!!

相关文章
|
2月前
|
存储 数据采集 API
如何通过1688开放平台API获取指定店铺所有商品
本文详解如何调用1688开放平台官方API(alibaba.product.getSellerProductList),通过授权、签名、分页请求,批量获取店铺全量商品信息(标题、价格、SKU等),含Python实现、错误处理与优化建议,适用于电商ERP及竞品分析系统开发。(239字)
465 2
|
2月前
|
前端开发 开发工具 C++
VSCode下载 | Visual Studio Code免费安装使用保姆级教程(新手必看)
VSCode是微软开发的免费开源代码编辑器,支持Windows/macOS/Linux,集代码编辑、调试、Git集成于一体。其强大扩展生态(数万插件)、轻量快速、跨平台及中文支持,使其成为开发者首选。本文提供完整下载、安装、汉化与高效插件配置指南。(239字)
中文计数法亿兆京垓秭穰沟涧正载
中文计数法亿兆京垓秭穰沟涧正载
2696 0
中文计数法亿兆京垓秭穰沟涧正载
|
SQL 弹性计算 算法
PostgreSQL 普通表在线转换为分区表 - online exchange to partition table
标签 PostgreSQL , 分区表 , 在线转换 背景 非分区表,如何在线(不影响业务)转换为分区表? 方法1,pg_pathman分区插件 《PostgreSQL 9.5+ 高效分区表实现 - pg_pathman》 使用非堵塞式的迁移接口 partition_table_concurrently( relation REGCLASS,
3202 0
|
敏捷开发 人工智能 开发者
Code Smell 重构你的日常代码-圈复杂度高多层嵌套
圈复杂度(Cyclomatic complexity)[1]是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出。条件分支越多,圈复杂度越高,测试越难覆盖,也越难维护。随着业务的不断演进,代码的不断新增与调整,如果只在原逻辑下加入自己的新逻辑,就会长出一个超高嵌套的“气功波”代码。
1512 7
Code Smell 重构你的日常代码-圈复杂度高多层嵌套
|
存储
antd为Tree组件标题附加操作按钮功能
antd为Tree组件标题附加操作按钮功能
875 0
antd为Tree组件标题附加操作按钮功能
|
缓存 编解码 前端开发
阿里云服务器计算网络增强型sn1ne与通用网络增强型sn2ne实例介绍
阿里云在活动中增加了计算网络增强型sn1ne和通用网络增强型sn2ne实例,很多新手用户对这两个实例规格并不是很了解,下面简单介绍下这两个实例的特点、适用场景及网络带宽、网络收发包PPS等指标数据,来了解下这两个实例,以便大家参考选择。
1123 0
阿里云服务器计算网络增强型sn1ne与通用网络增强型sn2ne实例介绍
|
算法 Android开发 UED
|
编解码 安全 Android开发
无影初体验
无影指的是“无影电脑”,阿里最近新推出的产品,相当于个人拥有一台云端电脑,可以通过web端、windows/mac桌面端、安卓端、硬件终端访问的电脑。
2196 0
无影初体验