mdx-m3-viewer
Version:
A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.
48 lines (36 loc) • 1.16 kB
text/typescript
let lineNumberReg = /:(\d+):/g;
/**
* A wrapper around a WebGL shader unit.
*/
export default class ShaderUnit {
ok: boolean = false;
webglResource: WebGLShader;
src: string;
shaderType: number;
constructor(gl: WebGLRenderingContext, src: string, type: number) {
let id = <WebGLShader>gl.createShader(type);
this.webglResource = id;
this.src = src;
this.shaderType = type;
gl.shaderSource(id, src);
gl.compileShader(id);
if (gl.getShaderParameter(id, gl.COMPILE_STATUS)) {
this.ok = true;
} else {
let error = gl.getShaderInfoLog(id);
if (error) {
let lines = src.split('\n');
console.error('Shader unit failed to compile!');
console.error(error);
let lineNumber = lineNumberReg.exec(error);
while (lineNumber) {
let integer = parseInt(lineNumber[1]);
console.error(integer + ': ' + lines[integer - 1]);
lineNumber = lineNumberReg.exec(error);
}
} else {
console.error('A shader unit failed to compile due to unknown reasons');
}
}
}
}