UNPKG

vislite

Version:

灵活、快速、简单的数据可视化交互式跨端前端库

42 lines (40 loc) 1.66 kB
/*! * Shader of VISLite JavaScript Library v1.3.0 * git+https://github.com/oi-contrib/VISLite.git */ var loadShader = function (painter, type, source) { var shader = painter.createShader(type); if (shader == null) throw new Error('Unable to create shader!'); painter.shaderSource(shader, source); painter.compileShader(shader); if (!painter.getShaderParameter(shader, painter.COMPILE_STATUS)) throw new Error('Failed to compile shader:' + painter.getShaderInfoLog(shader)); return shader; }; var useShader = function (painter, vshaderSource, fshaderSource) { var vertexShader = loadShader(painter, painter.VERTEX_SHADER, vshaderSource); var fragmentShader = loadShader(painter, painter.FRAGMENT_SHADER, fshaderSource); var glProgram = painter.createProgram(); painter.attachShader(glProgram, vertexShader); painter.attachShader(glProgram, fragmentShader); painter.linkProgram(glProgram); if (!painter.getProgramParameter(glProgram, painter.LINK_STATUS)) throw new Error('Failed to link program: ' + painter.getProgramInfoLog(glProgram)); return glProgram; }; var ShaderObject = (function () { function ShaderObject(painter) { this.__painter = painter; } ShaderObject.prototype.use = function () { this.__painter.useProgram(this.program); return this; }; ShaderObject.prototype.compile = function (vshaderSource, fshaderSource) { this.program = useShader(this.__painter, vshaderSource, fshaderSource); return this; }; return ShaderObject; }()); export { ShaderObject as default };