WebGL快速入门——坐标系统&创建canvas画布

1、坐标系统

我们如果学过canvas2D绘图后,都知道canvas的坐标系以及canvas2D绘制的图形,对于复杂的三维物体,canvas2D显然不能满足需求,那就需要今天的主角------webgl,webgl提供了丰富的API,可以绘制各种各样复杂的三维立体效果,主要用于网页端三维可视化开发。 与二维的canvas画布不同,webgl的坐标系的原点位于canvas中心,坐标系统有三个分量,分别是x轴,y轴和z轴,具体的不同,直接上图

canvas二维坐标系

webgl坐标系

2、canvas画布

步骤

创建canvas画布没有什么变化,还是两个步骤

1、获取canvas元素

dart 复制代码
// 获取canvas元素
const  canvas = document.querySelector("canvas")

2、获取上下文

arduino 复制代码
// 获取上下文
const gl = canvas.getContext("webgl")

3、设置画布背景颜色

gl.clearColor()方法用于设置清空颜色缓冲时的颜色值,这里我认为通俗的说就是设置canvas画布的背景颜色

scss 复制代码
// 设置背景颜色(r,g,b,a) 参数要求为浮点数
// gl.clearColor(red, green, blue, alpha)
gl.clearColor(1.0,0.0,0.0,1.0)

4、清屏

scss 复制代码
// 清屏
gl.clear(gl.COLOR_BUFFER_BIT);

示例

创建一个400×400像素大小的canvas画布,居中显示并设置背景为红色

代码

xml 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>基础模板</title>
    <style>
      * {
        padding: 0;
        margin: 0;
      }
      body {
        overflow: hidden;
      }
      canvas {
        display: block;
        width: 400px;
        height: 400px;
        margin: 0 auto;
        border: 1px solid red;
      }
    </style>
  </head>
  <body>
    <canvas></canvas>
    <script>
      // 获取canvas
      const canvas = document.querySelector("canvas");
      // 获取上下文
      const gl = canvas.getContext("webgl");
      // 设置canvas画布颜色
      gl.clearColor(0.0, 0.0, 0.0, 1.0);
      // 清屏
      gl.clear(gl.COLOR_BUFFER_BIT);
    </script>
  </body>
</html>

总结: 对于canvas画布的初始化记住以上几个步骤就可以了,对于步骤3和步骤4不理解也没关系,先记住这几个步骤。

写在最后:作者技术水平有限,如文章有误,请指出,谢谢~

相关推荐
随云6324 小时前
WebGL编程指南之着色器语言GLSL ES(入门GLSL ES这篇就够了)
前端·webgl
随云6324 小时前
WebGL编程指南之进入三维世界
前端·webgl
先生沉默先9 小时前
Unity WebGL使用nginx作反向代理处理跨域,一些跨域的错误处理(添加了反向代理的配置依旧不能跨域)
运维·nginx·webgl
不惑_4 天前
最佳ThreeJS实践 · 实现赛博朋克风格的三维图像气泡效果
javascript·node.js·webgl
小彭努力中5 天前
50. GLTF格式简介 (Web3D领域JPG)
前端·3d·webgl
小彭努力中5 天前
52. OrbitControls辅助设置相机参数
前端·3d·webgl
幻梦丶海炎6 天前
【Threejs进阶教程-着色器篇】8. Shadertoy如何使用到Threejs-基础版
webgl·threejs·着色器·glsl
小彭努力中6 天前
43. 创建纹理贴图
前端·3d·webgl·贴图
小彭努力中7 天前
45. 圆形平面设置纹理贴图
前端·3d·webgl·贴图
Ian10257 天前
webGL入门(五)绘制多边形
开发语言·前端·javascript·webgl