In my experience, there are two important facts about the opengl VBO cache:
- It is guaranteed that VTK will always use one VBO for a given
vtkDataArray
, this is essentially a map ofvtkDataArray*
to VBO. - Values are uploaded to a VBO only when the MTime of it’s
vtkDataArray
is greater than the last time that VBO was updated. IIUC, the MTime of avtkDataArray
doesn’t change when the values of the array are modified.
Both of those facts are not strictly true for composite datasets because the composite opengl polydata mapper appends data arrays into a single VBO. While it sounds efficient on paper, a practical limitiation is tha if one of the data arrays change size, all others will have to be re-uploaded.
vtkGlyphMapper might be tricky to setup, but it is more effective. I would suggest designing your app around the glyph mapper.