public ShaderProgram(params Shader[] shaders) { Variables = new List<Variable>(); Shaders = shaders.ToList(); ID = CreateProgram(Shaders); int c; GL.GetProgram(ID, GetProgramParameterName.ActiveUniforms, out c); for (var i = 0; i < c; i++) { int size; ActiveUniformType type; var name = GL.GetActiveUniform(ID, i, out size, out type); var loc = GL.GetUniformLocation(ID, name); var v = new Variable(loc, name, type); Variables.Add(v); } }
public ShaderProgram(params Shader[] shaders) { Variables = new List<Variable>(); Shaders = shaders.ToList(); ID = CreateProgram(Shaders); int c; GL.GetProgram(ID, ProgramParameter.ActiveUniforms, out c); for (var i = 0; i < c; i++) { int len, size; ActiveUniformType type; var sb = new StringBuilder(); GL.GetActiveUniform(ID, i, 256, out len, out size, out type, sb); var loc = GL.GetUniformLocation(ID, sb.ToString()); var v = new Variable(loc, sb.ToString(), type); Variables.Add(v); } }