回顾
为了在canvas上绘制二维图形,需经过以下三个步骤
- 获取canvas元素
 - 向该元素请求二维图形的绘图上下文
 - 在绘图上下文上调用相应的绘图函数,以绘制二维图形
 
最剪短的WebGL程序:清空绘图区
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title></head><body><canvas id="webgl" width="400" height="400"></canvas></body></html><script>const canvas = document.getElementById("webgl");// 获取webgl绘图上下文const gl = canvas.getContext("webgl");//指定一个覆盖(清空)canvas的颜色gl.clearColor(0.0,0.0,0.0,1.0);//执行清空gl.clear(gl.COLOR_BUFFER_BIT);</script>

它会遵循绘制二维图形的三个步骤: 获取canvas元素, 获取绘图上下文,开始绘图。
刚才我们共做了四步操作:
1.首先从文件中获取了canvas元素
2.为webgl获取绘图上下文,通常来说,我们应该使用canvas.getContext()来获取绘图上下文,但是在获取webgl上下文时,canvas.getContext()在不同的浏览器中会不同,可使用”experimental-webgl”和”webgl”,未来将变为”webgl”。 现在这个绘图环境对象就可以绘制三维图形了。
3.进行绘图操作。清空绘图之前我们需要指定背景颜色。使用gl.clearColor()以RGBA格式设置背景色。由于webgl是继承自opengl的,所以它遵循传统的opengl颜色分量的取值范围,从0.0到1.0。
4.清空canvas,最后可以调用gl.clear()函数,用之前指定的背景色进行清空。gl.clear(gl.COLOR_BUFFER_BIT)
webGL中的gl.clear()方法继承自opengl, 它基于多基本缓冲区模型,比二维绘图上下文复杂的多。清空绘图区实际上是清空颜色缓冲区。传递的参数其实就是告诉webgl清空颜色缓冲区。
gl.clearColor(red,green,blue,alpha)
| 参数 | |
|---|---|
| red | 指定红色值(从0.0到1.0) | 
| green | 指定绿色值(从0.0到1.0) | 
| blue | 指定蓝色值(从0.0到1.0) | 
| alpha | 指定透明度值(从0.0到1.0) | 
| 如果任何值小于0.0或者大于1.0,则被截断为0.0或1.0 | 
gl.clear(buffer)
指定缓冲区设定为预定的值。如果清空的是颜色缓冲区,那么将使用gl.clearColor()指定的值
| 参数 | |
|---|---|
| buffer | 指定待清空的缓冲区,位操作符可用来指定多可缓冲区 | 
| gl.COLOR_BUFFER_BIT | 指定颜色缓存 | 
| gl.DEPTH_BUFFER_BIT | 指定深度缓冲区 | 
| gl.STENCIL_BUFFER_BIT | 指定模板缓冲区 | 
为了方便后续使用,将引入三个工具函数
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title></head><body><canvas id="webgl" width="400" height="400"></canvas></body></html><script src="../lib/webgl-util.js" ></script><script src="../lib/webgl-debug.js" ></script><script src="../lib/cuon-utils.js" ></script><script>const canvas = document.getElementById("webgl");const gl = getWebGLContext(canvas);// // 获取webgl绘图上下文// const gl = canvas.getContext("webgl");// //指定一个覆盖(清空)canvas的颜色gl.clearColor(0.0,0.0,0.0,1.0);//执行清空gl.clear(gl.COLOR_BUFFER_BIT);</script>
将在后续文章中解释工具函数的内容,目前只用到获取上下文函数,用来做兼容处理
绘制一个点
在之前学习了如何建立一个webgl程序,如何使用一些简单的webgl相关函数。那后续,将进一步在一个示例程序中绘制一个最简单的图形。一个点。
