初始化
This commit is contained in:
35
vendor/h264-live-player/Shader.ts
vendored
Normal file
35
vendor/h264-live-player/Shader.ts
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
import Script from './Script';
|
||||
import error from './utils/error';
|
||||
|
||||
export default class Shader {
|
||||
public readonly shader?: WebGLShader | null;
|
||||
|
||||
constructor(readonly gl: WebGLRenderingContext, readonly script: Script) {
|
||||
// Now figure out what type of shader script we have, based on its MIME type.
|
||||
if (script.type === 'x-shader/x-fragment') {
|
||||
this.shader = gl.createShader(gl.FRAGMENT_SHADER);
|
||||
} else if (script.type === 'x-shader/x-vertex') {
|
||||
this.shader = gl.createShader(gl.VERTEX_SHADER);
|
||||
} else {
|
||||
error(`Unknown shader type: ${script.type}`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.shader) {
|
||||
error(`Shader is ${typeof this.shader}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// Send the source to the shader object.
|
||||
gl.shaderSource(this.shader, script.source);
|
||||
|
||||
// Compile the shader program.
|
||||
gl.compileShader(this.shader);
|
||||
|
||||
// See if it compiled successfully.
|
||||
if (!gl.getShaderParameter(this.shader, gl.COMPILE_STATUS)) {
|
||||
error('An error occurred compiling the shaders: ' + gl.getShaderInfoLog(this.shader));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user