Есть ли способ изменить атрибуты вершины в vertexshader / vertexprogram и сохранить изменения обратно в VBO?
Да, это называется Transform Feedback в OpenGL (или Stream-Out в DirectX):