function render() {
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
const projectionMatrix = mat4.perspective(
mat4.create(),
45 * Math.PI / 180,
canvas.width / canvas.height,
0.1, 100.0
);
const modelViewMatrix = mat4.translate(mat4.create(), [0, 0, -6]);
// 将矩阵传入着色器
gl.uniformMatrix4fv(
gl.getUniformLocation(shaderProgram, 'uProjectionMatrix'),
false,
projectionMatrix
);
gl.uniformMatrix4fv(
gl.getUniformLocation(shaderProgram, 'uModelViewMatrix'),
false,
modelViewMatrix
);
// 绑定顶点缓冲
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
const vertexPosition = gl.getAttribLocation(shaderProgram, 'aVertexPosition');
gl.vertexAttribPointer(vertexPosition, 3, gl.FLOAT, false, 0, 0);
gl.enableVertexAttribArray(vertexPosition);
// 绘制元素
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT, 0);
}
render();