// // 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; }