code: def __init__(self):
      app.Canvas.__init__(self, keys="interactive", size=(800, 600))
  
      # Create program
      self._program = gloo.Program(VERT_SHADER, FRAG_SHADER)
      self._program.bind(gloo.VertexBuffer(data))
      self._program["s_texture"] = gloo.Texture2D(im1)
  
      # Create first explosion
      self._new_explosion()
  
      # Enable blending
      gloo.set_state(
          blend=True,
          clear_color="black",
          blend_func=("src_alpha", "one"),
      )
  
      gloo.set_viewport(
          0, 0, self.physical_size[0], self.physical_size[1]
      )
  
      self._timer = app.Timer("auto", connect=self.update, start=True)
  
      self.show()
  
file_path: vispy/examples/demo/gloo/fireworks.py
imports: import time
  import numpy
  from vispy import gloo, app
label_desc: Use image node_id 1 to create a new Canvas object from inherited base classes: app with example: obj = Canvas()