语法
void gl.drawArrays(mode, first, count);
■ 参数
mode
GLenum 类型,指定绘制图元的方式,可能值如下。
可能值 | 描述 |
---|---|
gl.POINTS | 绘制一系列点 |
gl.LINE_STRIP | 绘制一个线条。即,绘制一系列线段,上一点连接下一点 |
gl.LINE_LOOP | 绘制一个线圈。即,绘制一系列线段,上一点连接下一点,并且最后一点与第一个点相连 |
gl.LINES | 绘制一系列单独线段。每两个点作为端点,线段之间不连接 |
gl.TRIANGLE_STRIP | 绘制一个三角带 |
gl.TRIANGLE_FAN | 绘制一个三角扇 |
gl.TRIANGLES | 绘制一系列三角形。每三个点作为顶点 |
first
GLint 类型 ,指定从哪个点开始绘制
count
GLsizei 类型,指定绘制需要使用到多少个点
■ 返回值
无
■ 异常
- 如果 mode 不是一个可接受值,将会抛出 gl.INVALID_ENUM 异常
- 如果 first 或者 count 是负值,会抛出 gl.INVALID_VALUE 异常
- 如果 gl.CURRENT_PROGRAM 为 null,会抛出 gl.INVALID_OPERATION 异常
关于三角带和三角扇的说明
■ 三角扇
GL_TRIANGLES是以每三个顶点绘制一个三角形。第一个三角形使用顶点v0,v1,v2,第二个使用v3,v4,v5,以此类推。如果顶点的个数n不是3的倍数,那么最后的1个或者2个顶点会被忽略。
■ 三角带
构建当前三角形的顶点的连接顺序依赖于要和前面已经出现过的2个顶点组成三角形的当前顶点的序号的奇偶性(如果从0开始)
如果当前顶点是奇数
组成三角形的顶点排列顺序:T = [n+1 n+2 n].
如果当前顶点是偶数:
组成三角形的顶点排列顺序:T = [n+2 n+1 n].
画一个正方形
这里我们使用gl.TRIANGLE_STRIP
来画一个正方形
正方形为偶数个顶点,所以此时套用上面的公式,顶点顺序应该为
A C B
D B C
即不相交的两个点作为首个点即末尾点即可(BC位置可交换)
■ 坐标示例
1 | const arrVtx = new Float32Array([ |