code: def draw_edge_visibility(gl, v, e, f, hidden_wireframe=True):
      
      gl.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  
      ec = np.arange(1, len(e)+1)
      ec = np.tile(col(ec), (1, 3))
      ec[:, 0] = ec[:, 0] & 255
      ec[:, 1] = (ec[:, 1] >> 8 ) & 255
      ec[:, 2] = (ec[:, 2] >> 16 ) & 255
      ec = np.asarray(ec, dtype=np.uint8)
      
      draw_colored_primitives(gl, v, e, ec)
      
      if hidden_wireframe:
          gl.Enable(GL_POLYGON_OFFSET_FILL)
          gl.PolygonOffset(10.0, 1.0)
          draw_colored_primitives(gl, v, f, fc=np.zeros(f.shape))
          gl.Disable(GL_POLYGON_OFFSET_FILL)
      
      raw = np.asarray(gl.getImage(), np.uint32)
      raw = raw[:,:,0] + raw[:,:,1]*256 + raw[:,:,2]*256*256 - 1
      return raw
docs: Assumes camera is set up correctly in gl context.