code: def __init__(self):
      app.Canvas.__init__(
          self,
          size=(1024, 1024),
          title="Skybox example",
          keys="interactive",
      )
  
      self.cubeSize = 10
      self.pressed = False
      self.azimuth = pi / 2.0
      self.elevation = pi / 2.0
      self.distanceMin = 1
      self.distanceMax = 50
      self.distance = 30
      self.sensitivity = 5.0
      self.view = getView(self.azimuth, self.elevation, self.distance)
      self.model = np.eye(4, dtype=np.float32)
      self.projection = np.eye(4, dtype=np.float32)
  
      self.program = gloo.Program(
          vertex_shader, fragment_shader, count=24
      )
      self.program["a_position"] = faces * self.cubeSize
      self.program["a_texcoord"] = faces
      self.program["a_texture"] = gloo.TextureCube(
          texture, interpolation="linear"
      )
      self.program["u_model"] = self.model
      self.program["u_view"] = self.view
      gloo.set_viewport(0, 0, *self.physical_size)
      self.projection = perspective(
          60.0, self.size[0] / float(self.size[1]), 1.0, 100.0
      )
      self.program["u_projection"] = self.projection
  
      gl.glEnable(gl.GL_DEPTH_TEST)
      gloo.set_clear_color("black")
      self.show()
  
file_path: vispy/examples/demo/gloo/skybox.py
imports: import numpy
  from math import cos, sin, pi
  from vispy import app, gloo
  from vispy.gloo import gl
  from vispy.io import read_png, load_data_file
  from vispy.util.transforms import perspective
label_desc: Use image node_id 1 to create a new Canvas object from inherited base classes: app with example: obj = Canvas()