// <!-- Warning -->
        public static ShaderProgram MakeProgram(Shader vertex, Shader fragment)
        {
            var program = new ShaderProgram(vertex, fragment);
            var programHandle = program.GetHandle();

            GL.AttachShader(programHandle, vertex.GetHandle());
            GL.AttachShader(programHandle, fragment.GetHandle());
            GL.LinkProgram (programHandle);

            int link_ok = 0;
            GL.GetProgram(programHandle, ProgramParameter.LinkStatus, out link_ok);

            int bufLength = 0;
            StringBuilder buf = new StringBuilder(8192);
            GL.GetProgramInfoLog(programHandle, buf.Capacity, out bufLength, buf);
            CheckGLError();

            if (link_ok != 0)
            {
                Console.Write("Attached and linked shaders.");
                if (bufLength > 0)
                    Console.Write(" Program Info Log: \n\n{0}", buf.ToString());
                Console.WriteLine();
            }
            else
            {
                string stream = "";
                stream = String.Format("Could not link shader program \n{0}", buf.ToString());
                throw new Exception(stream);
            }

            return program;
        }
Esempio n. 2
0
        public void AddModel(InstancedModel model, ShaderProgram program)
        {
            var programHandle = program.GetHandle();
            GL.UseProgram(programHandle);

            model.SaveAs(programHandle);
            int ambLU = GL.GetUniformLocation(programHandle, "ambientLight");
            int viewU = GL.GetUniformLocation(programHandle, "viewMatrix");
            int projU = GL.GetUniformLocation(programHandle, "projMatrix");

            _renderables.Add(new Renderable(model, program, ambLU, viewU, projU));
        }
Esempio n. 3
0
 public Renderable(InstancedModel m, ShaderProgram prog, int a, int v, int p)
 {
     model = m;
     program = prog;
     ambientLightUniform = a;
     viewUniform = v;
     projUniform = p;
 }