is vertex_buffer_object for static geometry or for data which can change dynamically? If i got it right, before rendering, you have to upload the data into the graphics card memory. Is this meant to be once (which would make vbo behave like display lists) or can this be done every frame, and this still being faster than immediate rendering calls? I have to draw several thousand particles which stay the same, but the drawing order changes (depth sorting). Are vbo the right way to handle them optimally?