UNPKG

sigma

Version:

A JavaScript library dedicated to graph drawing.

65 lines (64 loc) 2.1 kB
"use strict"; /** * Sigma.js Shader Utils * ====================== * * Code used to load sigma's shaders. * @module */ Object.defineProperty(exports, "__esModule", { value: true }); exports.loadProgram = exports.loadFragmentShader = exports.loadVertexShader = void 0; /** * Function used to load a shader. */ function loadShader(type, gl, source) { var glType = type === "VERTEX" ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER; // Creating the shader var shader = gl.createShader(glType); if (shader === null) { throw new Error("loadShader: error while creating the shader"); } // Loading source gl.shaderSource(shader, source); // Compiling the shader gl.compileShader(shader); // Retrieving compilation status var successfullyCompiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); // Throwing if something went awry if (!successfullyCompiled) { var infoLog = gl.getShaderInfoLog(shader); gl.deleteShader(shader); throw new Error("loadShader: error while compiling the shader:\n" + infoLog + "\n" + source); } return shader; } function loadVertexShader(gl, source) { return loadShader("VERTEX", gl, source); } exports.loadVertexShader = loadVertexShader; function loadFragmentShader(gl, source) { return loadShader("FRAGMENT", gl, source); } exports.loadFragmentShader = loadFragmentShader; /** * Function used to load a program. */ function loadProgram(gl, shaders) { var program = gl.createProgram(); if (program === null) { throw new Error("loadProgram: error while creating the program."); } var i, l; // Attaching the shaders for (i = 0, l = shaders.length; i < l; i++) gl.attachShader(program, shaders[i]); gl.linkProgram(program); // Checking status var successfullyLinked = gl.getProgramParameter(program, gl.LINK_STATUS); if (!successfullyLinked) { gl.deleteProgram(program); throw new Error("loadProgram: error while linking the program."); } return program; } exports.loadProgram = loadProgram;