I need to update the vertex positions as fast as possible. I don't want to download updated vertex position each time through the loop. I thought it might be possible to use a VBO to download the vertex data to the GPU, then each time through the loop update the modelview matrix and use it to transform the vertices in a vertex shader.