sig
  val get_string : [ `extensions | `renderer | `vendor | `version ] -> string
  val check_extension : string -> bool
  type equation = float * float * float * float
  val clip_plane : plane:int -> GlMisc.equation -> unit
  type hint_target =
      [ `fog
      | `line_smooth
      | `perspective_correction
      | `point_smooth
      | `polygon_smooth ]
  val hint :
    GlMisc.hint_target -> [ `dont_care | `fastest | `nicest ] -> unit
  val init_names : unit -> unit
  val load_name : int -> unit
  val push_name : int -> unit
  val pop_name : unit -> unit
  type attrib =
      [ `accum_buffer
      | `color_buffer
      | `current
      | `depth_buffer
      | `enable
      | `eval
      | `fog
      | `hint
      | `lighting
      | `line
      | `list
      | `pixel_mode
      | `point
      | `polygon
      | `polygon_stipple
      | `scissor
      | `stencil_buffer
      | `texture
      | `transform
      | `viewport ]
  val push_attrib : GlMisc.attrib list -> unit
  val pop_attrib : unit -> unit
  val render_mode : [ `feedback | `render | `select ] -> int
  val pass_through : float -> unit
  val select_buffer : [ `uint ] Raw.t -> unit
  type feedback_mode =
      [ `_2d | `_3d | `_3d_color | `_3d_color_texture | `_4d_color_texture ]
  val feedback_buffer : mode:GlMisc.feedback_mode -> [ `float ] Raw.t -> unit
  val scissor : x:int -> y:int -> width:int -> height:int -> unit
end