webGL入门-清空绘图区

535 阅读2分钟

什么是WebGL?

WebGL(Web图形库)是Web上3D图形的新标准,它旨在渲染2D图形和交互式3D图形。它来源于OpenGL的ES 2.0库,它是用于手机和其他移动设备的低级3D API。WebGL提供了类似的ES 2.0(嵌入式系统)功能,并且在现代3D图形硬件上表现良好。

它是可以与HTML5一起使用的JavaScript API。HTML5具有支持2D画布,WebGL,SVG,3D CSS变换和SMIL等3D图形的多项功能。

WebGL代码写在HTML5 的 canvas 标签中。这是一个允许Internet浏览器访问使用它们的计算机上的图形处理单元(GPU)的规范。

最短的webGL程序:清空绘图区

<canvas id="glcanvas" width="640" height="480"></canvas>
function main() {
    // 1.获取canvas元素
    const canvas = document.getElementById('glcanvas')

    // 2.获取webgl绘图上下文
    const gl = canvas.getContext('webgl')

    if (!gl) {
      alert('不支持webgl')
      return
    }

    // 3.设置背景色(指定清空canvas的颜色)
    gl.clearColor(0.0, 1.0, 0.0, 1.0)

    // 4.清空canvas
    gl.clear(gl.COLOR_BUFFER_BIT)
}

main()

分析

WebGLRenderingContext

WebGLRenderingContext 接口提供基于 OpenGL ES 2.0 的绘图上下文,用于在 HTML <canvas> 元素内绘图。

要获得这个接口的对象,可以通过在 <canvas> 元素上调用 getContext() 函数,调用时传入 “webgl” 参数:

const canvas = document.getElementById('glcanvas')
const gl = canvas.getContext('webgl')
// 当你获取到 canvas 元素的 WebGL 绘图上下文后,你便可以调用绘图API。

gl.clearColor()

WebGLRenderingContext.clearColor() 方法用于设置清空颜色缓冲时的颜色值。这指定调用 clear() 方法时使用的颜色值。

  /**
   * @param {Number} red 一个 GLclampf 类型的值,指定清除缓冲时的红色值(0.0-1.0)。默认值:0.0
   * @param {Number} green 一个 GLclampf 类型的值,指定清除缓冲时的绿色值(0.0-1.0)。默认值:0.0
   * @param {Number} blue 一个 GLclampf 类型的值,指定清除缓冲时的蓝色值(0.0-1.0)。默认值:0.0
   * @param {Number} alpha 一个 GLclampf 类型的值,指定清除缓冲时的不透明度(0.0-1.0)。默认值:0.0
   */
  void gl.clearColor(red, green, blue, alpha);

gl.clear()

WebGLRenderingContext.clear() 方法使用预设值来清空缓冲。

  /**
   * @param mask 一个用于指定需要清除的缓冲区的 GLbitfield 。可能的值有:
   * gl.COLOR_BUFFER_BIT   //颜色缓冲区
   * gl.DEPTH_BUFFER_BIT   //深度缓冲区
   * gl.STENCIL_BUFFER_BIT  //模板缓冲区
   */
  void gl.clear(mask);