class_docstr: **Bases:** :class:`GLGraphicsItem <pyqtgraph.opengl.GLGraphicsItem.GLGraphicsItem>`
  
  Displays a 3D triangle mesh. 
code: def paint(self):
      self.setupGLState()
  
      self.parseMeshData()
  
      if self.opts["drawFaces"]:
          with self.shader():
              verts = self.vertexes
              norms = self.normals
              color = self.colors
              faces = self.faces
              if verts is None:
                  return
              glEnableClientState(GL_VERTEX_ARRAY)
              try:
                  glVertexPointerf(verts)
  
                  if self.colors is None:
                      color = self.opts["color"]
                      if isinstance(color, QtGui.QColor):
                          glColor4f(*color.getRgbF())
                      else:
                          glColor4f(*color)
                  else:
                      glEnableClientState(GL_COLOR_ARRAY)
                      glColorPointerf(color)
  
                  if norms is not None:
                      glEnableClientState(GL_NORMAL_ARRAY)
                      glNormalPointerf(norms)
  
                  if faces is None:
                      glDrawArrays(
                          GL_TRIANGLES, 0, np.prod(verts.shape[:-1])
                      )
                  else:
                      faces = faces.astype(np.uint32).flatten()
                      glDrawElements(
                          GL_TRIANGLES,
                          faces.shape[0],
                          GL_UNSIGNED_INT,
                          faces,
                      )
              finally:
                  glDisableClientState(GL_NORMAL_ARRAY)
                  glDisableClientState(GL_VERTEX_ARRAY)
                  glDisableClientState(GL_COLOR_ARRAY)
  
      if self.opts["drawEdges"]:
          verts = self.edgeVerts
          edges = self.edges
          glEnableClientState(GL_VERTEX_ARRAY)
          try:
              glVertexPointerf(verts)
  
              if self.edgeColors is None:
                  color = self.opts["edgeColor"]
                  if isinstance(color, QtGui.QColor):
                      glColor4f(*color.getRgbF())
                  else:
                      glColor4f(*color)
              else:
                  glEnableClientState(GL_COLOR_ARRAY)
                  glColorPointerf(color)
              edges = edges.flatten()
              glDrawElements(
                  GL_LINES, edges.shape[0], GL_UNSIGNED_INT, edges
              )
          finally:
              glDisableClientState(GL_VERTEX_ARRAY)
              glDisableClientState(GL_COLOR_ARRAY)
  
file_path: pyqtgraph/pyqtgraph/opengl/items/GLMeshItem.py
imports: from OpenGL.GL import *
  import numpy
  from ...Qt import QtGui
  from ..None import shaders
  from ..GLGraphicsItem import GLGraphicsItem
  from ..MeshData import MeshData
label_desc: Use image node_id 8 for calling the GLMeshItem obj's underlying member method code with example usage: obj.paint() without return types