GLint glGetAttribLocation(GLuint program, const GLchar *name)
glGetAttribLocation queries the previously linked program object specified by program for the attribute variable specified by name and returns the index of the generic vertex attribute that is bound to that attribute variable. If name is a matrix attribute variable, the index of the first column of the matrix is returned. If the named attribute variable is not an active attribute in the specified program object or if name starts with the reserved prefix "gl_", a value of -1 is returned.
The association between an attribute variable name and a generic attribute index can be specified at any time with glBindAttribLocation. Attribute bindings do not take effect until glLinkProgram is called. After a program object has been linked successfully, the index values for attribute variables remain fixed until the next link command occurs. The attribute bindings can be queried only after a link if the link was successful. glGetAttribLocation returns the binding that actually went into effect the last time glLinkProgram was called for the specified program object. Attribute bindings that have been specified since the last link operation are not returned by glGetAttribLocation.
glGetAttribLocation is available only if the GL version is 2.0 or greater.
GL_INVALID_OPERATION is generated if program is not a value generated by OpenGL.
GL_INVALID_OPERATION is generated if program is not a program object.
GL_INVALID_OPERATION is generated if program has not been successfully linked.
GL_INVALID_OPERATION is generated if glGetAttribLocation is executed between the execution of glBegin and the corresponding execution of glEnd.
glGetActiveAttrib with argument program and the index of an active attribute
glBindAttribLocation, glLinkProgram, glVertexAttrib, glVertexAttribPointer