Home Reference Source

src/renderer/helpers/program.js

function createShader(gl, str, type) {
    const shader = gl.createShader(type);

    gl.shaderSource(shader, str);
    gl.compileShader(shader);

    const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);

    if (!compiled) {
        const error = gl.getShaderInfoLog(shader);

        console.error('Error compiling shader', error);
        gl.deleteShader(shader);
    }

    return shader;
}

export const createProgram = (gl, vertex, fragment) => {
    const vs = createShader(gl, vertex, gl.VERTEX_SHADER);
    const fs = createShader(gl, fragment, gl.FRAGMENT_SHADER);

    const program = gl.createProgram();

    gl.attachShader(program, vs);
    gl.attachShader(program, fs);
    gl.linkProgram(program);

    return program;
};