There appears to be a problem with the lines:
//Update the value of the vertices
for(uint i = VerticesEnd; i < Vertices.size(); ++i){
VerticesPositions[i] -= ID.VerticesSize;
}
in BufferData::RemoveData
. By looking at the rest of the code, I would venture to guess that it should rather be:
//Update the value of the vertices
for(uint i = VerticesEnd; i < VerticesPositions.size(); ++i){
VerticesPositions[i] -= ID.VerticesSize;
}