I have a situation where there are 3 million points. Broken up among 255 thousand separate entities. (GL_LINE_STRIP, GL_TRIANGLE_STRIP, etc..)

I have created 255 thousand VBOs. One for each entity.
The performance is the same as if I had simply done glBegin() vert, vert, vert, glEnd(). (which sends all 3 million points from CPU to GPU on every draw)

Is having the data broken up into so many separate VBOs the performance problem?

Should I make a single, giant VBO and draw each entity using an offset into that?

Other theories?