示例#1
0
        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);
        }
示例#2
0
        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");
        }