Sharing Polydata or VBO etc between mappers

In my experience, there are two important facts about the opengl VBO cache:

  1. It is guaranteed that VTK will always use one VBO for a given vtkDataArray, this is essentially a map of vtkDataArray* to VBO.
  2. 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 a vtkDataArray 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.