// // initShaders.js // function initShaders(gl, vertexShaderId, fragmentShaderId) { const compileShader = (gl, gl_shaderType, shaderSource) => { // Create the shader shader = gl.createShader(gl_shaderType); // Set the shader source code gl.shaderSource(shader, shaderSource); // Compile the shader to make it readable for the GPU gl.compileShader(shader); var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS); if (!success) { // Something went wrong during compilation; get the error throw "could not compile shader:" + gl.getShaderInfoLog(shader); } else { return shader; } }; /* * Setup shader program */ vShaderSource = document.querySelector("#" + vertexShaderId).text; fShaderSource = document.querySelector("#" + fragmentShaderId).text; vertexShader = compileShader(gl, gl.VERTEX_SHADER, vShaderSource); fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, fShaderSource); // Build the program const program = gl.createProgram(); // Attach shaders to it gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); return program; }