class_docstr: Generator for a fallback pyopengl backend.
class_docstr_tok: ["Generator","for","a","fallback","pyopengl","backend","."]
code: def _add_function(self, des):
      # Fix for FBO?
      mod = "GL"
      if (
          "renderbuffer" in des.name.lower()
          or "framebuffer" in des.name.lower()
      ):
          mod = "FBO"
      # Get call line
      argstr = ", ".join(des.args)
      call_line = "    return %s.%s(%s)" % (mod, des.es2.glname, argstr)
      # Get annotation lines
      ann_lines = []
      if des.ann is not None:
          ann_lines = des.ann.get_lines(call_line, self.backend_name)
      # Use annotation or not
      if ann_lines:
          self.lines.append("def %s(%s):" % (des.apiname, argstr))
          self.lines.extend(ann_lines)
          self._used_functions.append(des.es2.glname)
      else:
          # To be imported from OpenGL.GL
          self._functions_to_import.append(
              (des.es2.glname, des.apiname)
          )
  
imports: from __future__ import annotations
  import os
  import sys
  import headerparser
  from annotations import parse_anotations
  from OpenGL import GL
label_desc: Use image node_id 2 for calling the PyOpenGL2ApiGenerator obj's underlying member method code with example usage: obj._add_function(des) without return types