class_docstr: A collection of ModularPrograms that emulates the API of a single
  ModularProgram. 
  
  A single Visual is often drawn in many different ways--viewed under
  different transforms, with different clipping boundaries, or with different
  colors as in picking and anaglyph stereo. Each draw may require a different
  program. To simplify this process, MultiProgram exposes an API that looks
  very much like a single ModularProgram, but internally manages many
  programs.
code: def __init__(self, vcode="", fcode="", gcode=None):
      self._vcode = vcode
      self._fcode = fcode
      self._gcode = gcode
      self._programs = weakref.WeakValueDictionary()
      self._set_items = {}
      self._next_prog_id = 0
      self._vert = MultiShader(self, "vert")
      self._frag = MultiShader(self, "frag")
      self._geom = None if gcode is None else MultiShader(self, "geom")
  
imports: import weakref
  from .program import ModularProgram
label_desc: Use image node_id 1 to create a new MultiProgram object from inherited base classes: object with example: obj = MultiProgram(vcode, fcode, gcode)