Correct, the vertex arrays only know the pointers and offsets.
The glDrawElements() call has a “count” parameter which gives the size of the polygon.
You can use glDrawArrays() to give a “first” vertex and “count”.
I personally would prefer glVertexPointer() etc. instead of interleaved arrays, because there are not all combinations possible with interleaved arrays and the structure doesn’t matter (except for alignment) as long as the offsets are constant, and you can enable/disable single arrays.
>>PS: I heard that bluxxun and Cosmo VRML browers used Pentium III SIMD optimizations,
but how ?
That needs some serious ASM knowledge, lots of Katmai PDFs, an assembler with SIMD .include, or the Intel VTune package with the SSE intrinsics definitions for C.
Analogous for AMD 3Dnow!, but the SDK is downloadable from AMD’s site for free, intrinsics work with MSVC, assembler needs a relatively new ML.exe.