Read the VBO specs carefully. When using VBO you put the offset relative to the first element in the array, not a pointer. You can’t put a pointer just because VBO are sent to the graphic memory, so you can’t have its address back. If you don’t use VBO, then give the pointer but don’t bind the VBO before doing that.
They speak about a pointer for the last argument, but your explanation seems to be more logical…
It remains something that I dont understand if the last argument is not a pointer. Why in the case where I don’t use VBO, I have found a pointer towards the vertex array?
stride is an offset but matches the offset between two consecutive values for the array. It is generally always 0 but if you use interleaved arrays.
The last argument of VertexPointer is always a pointer but as VBO buffers are set in the graphic memory and there’s a single VertexPointer function, when a VBO is bound it is seen as a memory offset (just giving 0 here will tell GL to start at the first element stored in memory for the bound VBO).
It remains something that I dont understand if the last argument is not a pointer. Why in the case where I don’t use VBO, I have found a pointer towards the vertex array?
Can you explain more what you want to mean here ? I don’t understand.
Btw, use GL_FLOAT for the type of your vertex array elements but if you critically need something else. Floating points values are generally optimized.
If you can use VBO instead of ‘normal’ arrays, use them each time. They are generally available on all cards but very old ones.