Shader constructor

Shader(
  1. String vertexShaderSource,
  2. String fragmentShaderSource
)

Implementation

Shader(this.vertexShaderSource, this.fragmentShaderSource) {
  vertexShader = gl.createShader(WebGL.WebGL.VERTEX_SHADER);
  gl.shaderSource(vertexShader, vertexShaderSource);
  gl.compileShader(vertexShader);
  if(!(gl.getShaderParameter(vertexShader, WebGL.WebGL.COMPILE_STATUS) as bool)) {
    throw gl.getShaderInfoLog(vertexShader) as String;
  }

  fragmentShader = gl.createShader(WebGL.WebGL.FRAGMENT_SHADER);
  gl.shaderSource(fragmentShader, fragmentShaderSource);
  gl.compileShader(fragmentShader);
  if(!(gl.getShaderParameter(fragmentShader, WebGL.WebGL.COMPILE_STATUS) as bool)) {
    throw gl.getShaderInfoLog(fragmentShader) as String;
  }

  program = gl.createProgram();
  gl.attachShader(program, vertexShader);
  gl.attachShader(program, fragmentShader);
  gl.linkProgram(program);

  if(!(gl.getProgramParameter(program, WebGL.WebGL.LINK_STATUS)as bool)) {
    throw gl.getProgramInfoLog(program) as String;
  }

  gl.validateProgram(program);
  if(!(gl.getProgramParameter(program, WebGL.WebGL.VALIDATE_STATUS)as bool)) {
    throw gl.getProgramInfoLog(program) as String;
  }
}