The question is why do you generate stuff every frame if there are no animated deformations applied to geometry? As malexander already said - pre-generate it once at startup, store the data and then draw each frame using that data. You can draw from the same data via ram arrays or VBO arrays or even in immediate mode. If you continue to generate the data each frame, no VBOs will help you. In fact they'll make things worse as you'll need additional frame-time to upload the data to VRAM.
Originally Posted by wmelgaard
VBO code is very similar to ram arrays code. So get ram arrays working first (glDrawElements() etc.). Switching to VBOs from there is rather trivial. Same data just needs to be uploaded to the gpu memory.
The limit could turn out to be the indices-buffer .. if you draw indexed.
I swing 1.4 mill vertices flavlessly on a modest pc using a setup almost identical to this:
On the other hand .. it's a plain height-field.
I do have to use 4 draw-calls and reuse the indices with a new base-offset each time.