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


效果:

1dc618a0ed9580ce8bfa6facb208c08f.png


根据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>

效果:

5d4c6812c8535adbb050f4ddf2e1bce8.png

相关文章
|
6月前
(一)如何根据rgba刷成webgl的底色
(一)如何根据rgba刷成webgl的底色
|
4月前
|
前端开发
|
5月前
|
前端开发
canvas图像阴影处理
canvas图像阴影处理
|
前端开发
|
前端开发
css:border-radius绘制边框圆角-全圆和椭圆
css:border-radius绘制边框圆角-全圆和椭圆
139 0
css:border-radius绘制边框圆角-全圆和椭圆
CSS3文本居中显示、圆形圆角绘制、立体阴影效果设置实例演示
CSS3文本居中显示、圆形圆角绘制、立体阴影效果设置实例演示
131 0
|
前端开发
canvas渐变
canvas渐变
120 1
canvas渐变
|
JSON 前端开发 JavaScript
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
934 0
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
|
前端开发 JavaScript
canvas-渐变文字
html要求: body这里的onload一定要写,在这个处理模式下,是在body这里执行加载页面完成后加载canvas的命令。有的写在了js中的window.onload=function(){},这里就要换一种写法了。
869 0
Photoshop - CMYK 和 RGB 区别是什么?
Photoshop - CMYK 和 RGB 区别是什么?
457 0
Photoshop - CMYK 和 RGB 区别是什么?