(一)如何根据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>

效果:



大功告成!!

相关文章
|
6月前
|
前端开发
|
8月前
一行代码获取rgba颜色色值的透明度
一行代码获取rgba颜色色值的透明度
|
前端开发
|
移动开发 前端开发 JavaScript
使用Canvas绘制图形和动画
使用Canvas绘制图形和动画
214 0
|
前端开发
canvas渐变
canvas渐变
128 1
canvas渐变
(一)如何根据rgba刷成webgl的底色
(一)如何根据rgba刷成webgl的底色
110 0
(一)如何根据rgba刷成webgl的底色
|
JSON 前端开发 JavaScript
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
983 0
|
前端开发 JavaScript
canvas-渐变文字
html要求: body这里的onload一定要写,在这个处理模式下,是在body这里执行加载页面完成后加载canvas的命令。有的写在了js中的window.onload=function(){},这里就要换一种写法了。
883 0
|
前端开发
CSS和SVG实现文字渐变、描边、投影
CSS和SVG实现文字渐变、描边、投影
CSS和SVG实现文字渐变、描边、投影

热门文章

最新文章

下一篇
开通oss服务