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); }
private static void initShaders() { var fragmentShader = GetShader(gl, "shader-fs"); var vertexShader = GetShader(gl, "shader-vs"); shaderProgram = gl.CreateProgram(); gl.AttachShader(shaderProgram, vertexShader); gl.AttachShader(shaderProgram, fragmentShader); gl.LinkProgram(shaderProgram); if (!gl.GetProgramParameter(shaderProgram, gl.LinkStatus)) { throw new Exception("Could not initialize shaders"); } gl.UseProgram(shaderProgram); vertexPositionAttribute = gl.GetAttributeLocation(shaderProgram, "aVertexPosition"); gl.EnableVertexAttributeArray(vertexPositionAttribute); pMatrixUniform = gl.GetUniformLocation(shaderProgram, "uPMatrix"); mvMatrixUniform = gl.GetUniformLocation(shaderProgram, "uMVMatrix"); }