export class Camera { constructor(gl) { const fieldOfView = 45 * Math.PI / 180; // in radians const aspect = gl.canvas.clientWidth / gl.canvas.clientHeight; const zNear = 0.1; const zFar = 100.0; const projectionMatrix = mat4.create(); // note: glmatrix.js always has the first argument // as the destination to receive the result. mat4.perspective(projectionMatrix, fieldOfView, aspect, zNear, zFar); // Set the drawing position to the "identity" point, which is // the center of the scene. const modelViewMatrix = mat4.create(); // Now move the drawing position a bit to where we want to // start drawing the square. mat4.translate(modelViewMatrix, // destination matrix modelViewMatrix, // matrix to translate [-0.0, 0.0, -6.0]); // amount to translate this.mvmatrix = modelViewMatrix; this.pmatrix = projectionMatrix; } use(gl, shader) { gl.uniformMatrix4fv( shader.uniforms.projectionMatrix, false, this.pmatrix); gl.uniformMatrix4fv( shader.uniforms.modelViewMatrix, false, this.mvmatrix); } }