sig
  val color : ?alpha:float -> Gl.rgb -> unit
  val index : float -> unit
  val cull_face : Gl.face -> unit
  val front_face : [ `ccw | `cw ] -> unit
  val edge_flag : bool -> unit
  val line_width : float -> unit
  val line_stipple : ?factor:int -> Gl.short -> unit
  val point_size : float -> unit
  val polygon_offset : factor:float -> units:float -> unit
  val polygon_mode : face:Gl.face -> [ `fill | `line | `point ] -> unit
  val polygon_stipple : GlPix.bitmap -> unit
  val shade_model : [ `flat | `smooth ] -> unit
  val normal : ?x:float -> ?y:float -> ?z:float -> unit -> unit
  val normal3 : Gl.vect3 -> unit
  val rect : Gl.point2 -> Gl.point2 -> unit
  type shape =
      [ `line_loop
      | `line_strip
      | `lines
      | `points
      | `polygon
      | `quad_strip
      | `quads
      | `triangle_fan
      | `triangle_strip
      | `triangles ]
  val begins : GlDraw.shape -> unit
  val ends : unit -> unit
  val vertex : x:float -> y:float -> ?z:float -> ?w:float -> unit -> unit
  val vertex2 : Gl.point2 -> unit
  val vertex3 : Gl.point3 -> unit
  val vertex4 : Gl.point4 -> unit
  val viewport : x:int -> y:int -> w:int -> h:int -> unit
end