是HTML5新增的元素,负责在页面中设定一个区域,可以通过js动态地在这个区域中绘制图形。
所以在使用webgl时,如果有OpenGL基础会更容易理解和上手。
作为H5的一个要素,和普通要素一样,先添加再设置属性
添加时不设置属性,默认宽300高150,而且不绘制内容时是透明的看不到
绘制图形之前要获取2D或3D上下文,得到结果进而判断是否支持绘制
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
if (ctx) {
//...
}
原点位于左上角,坐标(0,0)
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
if (ctx) {
ctx.fillStyle = 'red'; //设置填充样式
ctx.strokeStyle = 'graw'; //设置边框样式
//填充矩形,参数:起点x,起点y,矩形宽度,矩形高度
ctx.fillRect(10, 10, 30, 20);
//绘制矩形边框,参数:起点x,起点y,矩形宽度,矩形高度
ctx.strokeRect(10, 40, 30, 20);
//清楚画布的矩形区域,参数:起点x,起点y,矩形宽度,矩形高度
//ctx.clearRect(0, 0, canvas.width, canvas.height);
//开始绘制新的路径
ctx.beginPath();
//绘制圆形:参数:起点x,起点y,半径长度,开始角度(弧度表示),截止角度(弧度表示),是否逆时针
ctx.arc(100, 70, 50, 0, 2 * Math.PI, false);
//移动绘制起点
ctx.moveTo(130,70);
//画小圆
ctx.arc(100, 70, 30, 0, 2 * Math.PI, false);
//描边路径-不描边是看不到的
ctx.stroke();
}
还有更多绘制API,参考官方文档
WebGL的目前最新版本是2.0,基于OpenGL ES 3.0规范实现
WebGL 2.0规范:https://www.khronos.org/Registry/WebGL/specs/Update/2.0/
WebGL 1.0规范:https://www.khronos.org/Registry/WebGL/specs/1.0.2/
WebGL 2.0的浏览器支持工作还在进行中,现阶段先用1.0来学习
坐标系:
创建视口坐标系的坐标系起点在左下角
视口内部绘图时的坐标系起点在画布中央的中心点