目前我们有很多快速接触WebGL绘制复杂图形的方案,但最后发现我们忽略了很多细节。当然,这对于初学者学习WebGL是很有必要的,能够快速的引起我们学习WebGL的兴趣。当学习到更深入的阶段,我们要了解WebGL的工作机制,这对我们的编程也会有很大的帮助。以上也是我想写这样一个系列的原因。简介用更专业的描述,WebGL(WebGraphicsLibrary)是一个JavaScriptAPI,用于渲染交互式3D和2D图形,不需要插件,兼容下一代浏览器。它通过HTML5中的

获取WebGL上下文目前所有浏览器基本都支持WebGL,只是IE11和Edge浏览器略有不同。下面是初始化WebGL的基本封装:functioninitWebGL(canvas){//创建一个全局变量window.gl=null;try{//尝试获取标准上下文,如果失败,回退到实验上下文gl=canvas.getContext("webgl")||canvas.getContext("experimental-webgl");}catch(e){throw'创建失败。';}//如果没有GL上下文,立即放弃if(!gl){alert("WebGL初始化失败,可能是浏览器不支持。");gl=null;}returngl;}这里是使用canvas的getContext(contextType,contextAttributes)方法确定浏览器是否支持WebGL并创建其上下文。当返回值为canvascontext时,表示浏览器支持WebGL,为null则创建失败。注意在IE11和Edge浏览器下,需要使用“experimental-webgl”来创建WebGL,这里做了兼容性处理。设置背景色为黑色,清空空白绘图区下的缓冲区。vargl;//WebGL的全局变量functionstart(){varcanvas=document.getElementById("glcanvas");//初始化WebGL上下文gl=initWebGL(canvas);//只有当WebGL可用时才继续if(gl){//设置清除颜色为黑色,不透明gl.clearColor(0.0,0.0,0.0,1.0);//清除颜色和深度缓冲区gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);}}这样,我们就可以浏览您在显示器中看到黑色区域。您可能已经注意到WebGL遵循传统的OpenGL颜色分量范围,从0.0到1.0。RGB值越高,颜色越亮。注意这里的clear()方法清除的是color和depthbuffer,不是绘图区域的