I have always been using old-style vertex arrays, that means i always used glVertexPointer, glNormalPointer, etc. to set up my vertex-arrays.
Now i wanted to switch to general vertex attributes, but ran into a few problems.
1) In another thread someone mentioned, one could not interleave arrays, when using general vertex attributes. So far i don't see, why it should be like that. Did i miss something?
2) Regarding the stride parameter. I just noticed, that my vertex-arrays are always working fine, although i pass different stride-values. For example for position i always passed 12 as stride, but 0 works also. Specifications are a bit unclear. Does the stride mean the offset i need to add to the address of vertex n to get to vertex n+1, or does it mean an additional delta that needs to be added. For example, if i use 3 component data, but add an additional fourth component as padding for better alignment, the stride would be the size of the fourth component?
I assume it is the first case, and for example for position the stride of 0 is regarded by the driver as 12 (sizeof position).
3) I use vertex attribute array 3 (color), but in my shader gl_Color seems not to be set.
Also the GLSL specification says nothing about general vertex attributes, so i assume i am forced to read gl_Color in the vertex shader, instead of gl_Attrib or something? A bit inconsequent, i think. Especially, if the values are actually not passed into the variables. Or am i doing something wrong?
This is on an ATI X1600.