sig
  type t
  val of_raw : [ `double ] Raw.t -> GlMat.t
  external to_raw : GlMat.t -> [ `double ] Raw.t = "%identity"
  val of_array : float array array -> GlMat.t
  val to_array : GlMat.t -> float array array
  val load : GlMat.t -> unit
  val load_transpose : GlMat.t -> unit
  val mult : GlMat.t -> unit
  val mult_transpose : GlMat.t -> unit
  val load_identity : unit -> unit
  val push : unit -> unit
  val pop : unit -> unit
  val mode : [ `modelview | `projection | `texture ] -> unit
  val get_matrix :
    [ `modelview_matrix | `projection_matrix | `texture_matrix ] -> GlMat.t
  val rotate :
    angle:float -> ?x:float -> ?y:float -> ?z:float -> unit -> unit
  val scale : ?x:float -> ?y:float -> ?z:float -> unit -> unit
  val translate : ?x:float -> ?y:float -> ?z:float -> unit -> unit
  val rotate3 : angle:float -> Gl.vect3 -> unit
  val scale3 : Gl.point3 -> unit
  val translate3 : Gl.point3 -> unit
  val ortho : x:float * float -> y:float * float -> z:float * float -> unit
  val frustum : x:float * float -> y:float * float -> z:float * float -> unit
end