private WebGLProgram InitProgram(WebGLContext gl, string vsSource, string fsSource) { var vertexShader = this.LoadShader(gl, ShaderType.VERTEX_SHADER, vsSource); var fragmentShader = this.LoadShader(gl, ShaderType.FRAGMENT_SHADER, fsSource); var program = gl.CreateProgram(); gl.AttachShader(program, vertexShader); gl.AttachShader(program, fragmentShader); gl.LinkProgram(program); gl.DeleteShader(vertexShader); gl.DeleteShader(fragmentShader); if (!gl.GetProgramParameter <bool>(program, ProgramParameter.LINK_STATUS)) { string info = gl.GetProgramInfoLog(program); throw new Exception("An error occured while linking the program: " + info); } return(program); }