清空绘图区

HelloCanvas.html  

 1 <!DOCTYPE html>
 2 <html lang = "en">
 3 <head>
 4     <meta charset="utf-8" />
 5     <title>Clear canvas</title>
 6 </head>
 7 <body onload="main()">
 8     <canvas id="webgl" width="400" height="400">
 9         Please use the browert supporting "canvas"
10     </canvas>
11     <script src="../lib/webgl-utils.js"></script>
12     <script src="../lib/webgl-debug.js"></script>
13     <script src="../lib/cuon-utils.js"></script>
14 
15     <script src="HelloCanvs.js"></script>
16 </body>
17 </html>

  首先使用<canvas>元素定义绘图区域(第8行),然后引入HelloCanvas.js文件(webgl程序),第11-13行引入了定义好的一些库。

//HelloCanvas.js
function main() {
    // 获取<canvas>元素
    var canvas = document.getElementById('webgl');

    // 获取webGL绘图上下文
    var gl = getWebGLContext(canvas);
    if (!gl) {
        console.log('Failed to get the rendering context for WebGL');
        return;
    }

    // 指定清空<canvas>的颜色
    gl.clearColor(0.0, 0.0, 1.0, 1.0);

    // 清空<canvas>
    gl.clear(gl.COLOR_BUFFER_BIT);
}

  main()函数的执行流程:

  1、获取<canvas>元素,和之前一样使用document.getElementById(id);

  2、获取绘图上下文,这里不和之前一样使用“canvas.getContex()”因为在不同浏览器中该函数接收的参数不同,所以这里用getWebGLContex()来隐藏不同浏览器之间的差异,具体定义可以在coun-utils.js中查看。

    getWebGLContex()的规范:

    

 

  3、设置<canvas>的背景色

    在清空绘图区之前需要指定背景颜色,使用gl.clearColor()以RGBA格式设置背景色,由于WebGL继承自OpenGL,所以它遵循OpenGL颜色分量的取值范围,即从0.0-1.0,。

     

 

    一旦指定了背景色之后,背景色会驻存在WebGL系统中,在下一次调用gl.clearColor()方法前不会改变,

  4、清空<canvas>

    gl.clear(gl.COLOR_BUFFER.BIT)函数,用之前指定的背景色清空(即用背景色填充,擦除已经绘制的内容)绘图区域。参数gl.COLOR_BUFFER.BIT是告诉WebGL清空颜色缓冲区。

    清空颜色缓冲区将导致WebGL清空页面上的<canvas>区域。

    

    各个缓冲区的默认值:

    

 

    

 


posted @ 2020-07-07 22:18  Silent_X  阅读(202)  评论(0)    收藏  举报