Possible Duplicate:
Explicit vs Automatic attribute location binding for OpenGL shaders
Why should I use glBindAttribLocation?
I tried to call glGetAttribLocation without binding any attrib locations and it seemed to work. So I can always cache the attrib locations in array if I want to have instant access. What is the purpose of using glBindAttribLocation then ?
[OpenGL 2.0]
A:
glBindAttribLocation just allows you to bind a specific index to an attribute name. So you can always use the same indices for the same things. Eg vertex coordinates = 0, texture coordinates = 1, normals = 2. So then you can write your drawing code that just uses those and you take care of the setup so your shader conforms to those with glBindAttribLocation.
What I do in my code is have something like this:
enum{
GRAPHICS_ATTRIB_VERTEX = 0,
GRAPHICS_ATTRIB_NORMAL,
GRAPHICS_ATTRIB_TEXTURE,
};
Then I can just use those like this:
glVertexAttribPointer(GRAPHICS_ATTRIB_VERTEX, ....);
And it will work with all my shaders with no glGetAttribLocation.