code: def draw(self, painter):
      painter.setPen(QtCore.Qt.GlobalColor.white)
      painter.setRenderHints(
          QtGui.QPainter.RenderHint.Antialiasing
          | QtGui.QPainter.RenderHint.TextAntialiasing
      )
  
      rect = self.view().rect()
      af = QtCore.Qt.AlignmentFlag
  
      painter.drawText(rect, af.AlignTop | af.AlignRight, "TR")
      painter.drawText(rect, af.AlignBottom | af.AlignLeft, "BL")
      painter.drawText(rect, af.AlignBottom | af.AlignRight, "BR")
  
      opts = self.view().cameraParams()
      lines = []
      center = opts["center"]
      lines.append(
          f"center : ({center.x():.1f}, {center.y():.1f}, {center.z():.1f})"
      )
      for key in ["distance", "fov", "elevation", "azimuth"]:
          lines.append(f"{key} : {opts[key]:.1f}")
      xyz = self.view().cameraPosition()
      lines.append(
          f"xyz : ({xyz.x():.1f}, {xyz.y():.1f}, {xyz.z():.1f})"
      )
      info = "\n".join(lines)
      painter.drawText(rect, af.AlignTop | af.AlignLeft, info)
  
      project = self.compute_projection()
  
      hsize = SIZE // 2
      for xi in range(-hsize, hsize + 1):
          for yi in range(-hsize, hsize + 1):
              if xi == -hsize and yi == -hsize:
                  # skip one corner for visual orientation
                  continue
              vec3 = QtGui.QVector3D(xi, yi, 0)
              pos = project.map(vec3).toPointF()
              painter.drawEllipse(pos, 1, 1)
  
file_path: pyqtgraph/pyqtgraph/examples/GLPainterItem.py
imports: import OpenGL.GL
  import pyqtgraph
  from pyqtgraph.opengl import GLAxisItem, GLGraphicsItem, GLGridItem, GLViewWidget
  from pyqtgraph.Qt import QtCore, QtGui
label_desc: Use image node_id 4 for calling the GLPainterItem obj's underlying member method code with example usage: obj.draw(painter) without return types