code: def create_mesh(self, x, y, u, v):
      tri = scipy.spatial.Delaunay(np.column_stack([x, y]))
      edges = tri.simplices.astype(np.uint32)
      uv = []
      for c in [u, v]:
          if c is not None:
              c = c.astype("f4")
              c = 0.5 + 0.5 * c / np.abs(c).max()
              uv.append(c)
      data = np.column_stack(
          [x.astype("f4"), y.astype("f4")] + uv
      ).view(
          dtype=[
              ("position", "f4", (2,)),
              ("texcoord", "f4", (2 if v is not None else 1,)),
          ]
      )
      self.vbo = gloo.VertexBuffer(data)
      self.index = gloo.IndexBuffer(edges)
  
      gloo.set_state(
          blend=True,
          clear_color="white",
          blend_func=("src_alpha", "one_minus_src_alpha"),
      )
  
file_path: vispy/examples/demo/gloo/unstructured_2d.py
imports: import sys
  import numpy
  import scipy.spatial
  from vispy import gloo, app
  from vispy.util.transforms import ortho
label_desc: Use image node_id 3 for calling the Canvas obj's underlying member method code with example usage: obj.create_mesh(x, y, u, v) without return types