code: def __init__(self):
      app.Canvas.__init__(
          self, keys="interactive", size=((W * 5), (H * 5))
      )
  
      self.program = gloo.Program(VERT_SHADER, FRAG_SHADER)
      self.texture = gloo.Texture2D(img_array, interpolation="linear")
  
      self.program["u_texture"] = self.texture
      self.program.bind(gloo.VertexBuffer(data))
  
      self.view = np.eye(4, dtype=np.float32)
      self.model = np.eye(4, dtype=np.float32)
      self.projection = np.eye(4, dtype=np.float32)
  
      self.program["u_model"] = self.model
      self.program["u_view"] = self.view
      self.projection = ortho(0, W, 0, H, -1, 1)
      self.program["u_projection"] = self.projection
  
      gloo.set_clear_color("white")
  
      self._timer = app.Timer("auto", connect=self.update, start=True)
  
      self.show()
  
file_path: vispy/examples/gloo/animate_images.py
imports: import numpy
  from vispy.util.transforms import ortho
  from vispy import gloo
  from vispy import app
label_desc: Use image node_id 1 to create a new Canvas object from inherited base classes: app with example: obj = Canvas()