public GLVertexSignature(GLAttribute[] attributes) { Attributes = attributes.OrderBy(e => e.Location).ToArray(); }
private static GLAttribute[] ExtractAttributes(int programHandle) { int attributeCount; GL.GetProgram(programHandle, GetProgramParameterName.ActiveAttributes, out attributeCount); GLAttribute[] attributes = new GLAttribute[attributeCount]; for (int i = 0; i < attributeCount; ++i) { int size; ActiveAttribType type; string name = GL.GetActiveAttrib(programHandle, i, out size, out type); int location = GL.GetAttribLocation(programHandle, name); attributes[i] = new GLAttribute(type, location, name); } return attributes; }