Skip to main content
`Ctrl`+`K`

# vispy.visuals.shaders.multiprogram module

class vispy.visuals.shaders.multiprogram.MultiProgram(vcode='', fcode='', gcode=None)

  Bases: `object`

  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.

  add_program(name=None)

    Create a program and add it to this MultiProgram.

    It is the caller’s responsibility to keep a reference to the returned program.

    The name must be unique, but is otherwise arbitrary and used for debugging purposes.

  bind(data)
  property frag

    A wrapper around all fragment shaders contained in this MultiProgram.

  property geom

    A wrapper around all geometry shaders contained in this MultiProgram.

  property vert

    A wrapper around all vertex shaders contained in this MultiProgram.

class vispy.visuals.shaders.multiprogram.MultiShader(program, shader)

  Bases: `object`

  Emulates the API of a MainFunction while wrapping all vertex or fragment shaders in a MultiProgram.

  Example:

      mp = MultiProgram(vert, frag)
      mp.add_program('p1')
      mp.add_program('p2')

      # applies to all programs
      mp.vert['u_scale'] = (1, 2)

      # applies to one program
      mp.get_program('p1').frag['u_color'] = (1, 1, 1, 1)