What is the most efficient way to host / update VBOs in this context? I am sure that I should use DYNAMIC_DRAW and bufferSubData to update each object.
This is really the way to go. In fact, you want to use double or even triple buffering for your objects, i.e. have one binding to VBO for drawing, while you are updating the contents of another with new data. After glMapBuffer, the memory card can be accessed from all threads in the process, so you can have a worker thread updating the "correct" vertex buffer, while the rendering thread is busy drawing the current frame.
Or is it small enough in terms of the amount of memory that I think too much?
Did you rate the worst memory you are dealing with? Given your numbers, I bet it will be below 16MiB (150 objects * 2048 points * 3 double-precision floats per point * 8 bytes per double = 7.4 MiB, only 3.7MiB if single precision floats are used). Compare this with several hundred modern MiB RAM graphics cards (my GeForce 8800GTX had 768MiB RAM in 2006, and my Radeon HD6570 has 1024 megabytes (= 1 Gb).
source share