sig
  type kind =
      [ `color | `edge_flag | `index | `normal | `texture_coord | `vertex ]
  val edge_flag : [ `bitmap ] Raw.t -> unit
  val tex_coord :
    [< `four | `one | `three | `two ] ->
    [< `double | `float | `int | `short ] Raw.t -> unit
  val color :
    [< `four | `three ] ->
    [< `byte | `double | `float | `int | `short | `ubyte | `uint | `ushort ]
    Raw.t -> unit
  val index : [< `double | `float | `int | `short | `ubyte ] Raw.t -> unit
  val normal : [< `byte | `double | `float | `int | `short ] Raw.t -> unit
  val vertex :
    [< `four | `three | `two ] ->
    [< `double | `float | `int | `short ] Raw.t -> unit
  external enable : GlArray.kind -> unit = "ml_glEnableClientState"
  external disable : GlArray.kind -> unit = "ml_glDisableClientState"
  external element : int -> unit = "ml_glArrayElement"
  external draw_arrays : GlDraw.shape -> first:int -> count:int -> unit
    = "ml_glDrawArrays"
  external draw_elements :
    GlDraw.shape -> count:int -> [< `ubyte | `uint | `ushort ] Raw.t -> unit
    = "ml_glDrawElements"
end