code: def __init__(self):
      app.Canvas.__init__(self, keys="interactive")
  
      # Create program
      self._program = gloo.Program(VERT_SHADER, FRAG_SHADER)
  
      # Create vertex buffer
      self._vbo = gloo.VertexBuffer(vertex_data)
  
      # Set uniforms, samplers, attributes
      # We create one VBO with all vertex data (array of structures)
      # and create two views from it for the attributes.
      self._program["texture1"] = gloo.Texture2D(im1)
      self._program.bind(self._vbo)  # This does:
      # self._program['a_position'] = self._vbo['a_position']
      # self._program['a_texcoords'] = self._vbo['a_texcoords']
  
      gloo.set_clear_color("white")
  
      self._timer = app.Timer("auto", connect=self.update, start=True)
  
      self.show()
  
file_path: vispy/examples/gloo/animate_shape.py
imports: import time
  import numpy
  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()