sig
  type t = float array
  val get_identity : unit -> Ogl_matrix.t
  val perspective_projection :
    fov:float -> ratio:float -> near:float -> far:float -> Ogl_matrix.t
  val ortho_projection :
    left:float ->
    right:float ->
    bottom:float -> top:float -> near:float -> far:float -> Ogl_matrix.t
  val frustum :
    left:float ->
    right:float ->
    bottom:float -> top:float -> near:float -> far:float -> Ogl_matrix.t
  val translation_matrix : float * float * float -> Ogl_matrix.t
  val scale_matrix : float * float * float -> Ogl_matrix.t
  val x_rotation_matrix : angle:float -> Ogl_matrix.t
  val y_rotation_matrix : angle:float -> Ogl_matrix.t
  val z_rotation_matrix : angle:float -> Ogl_matrix.t
  val mult_matrix : m1:Ogl_matrix.t -> m2:Ogl_matrix.t -> Ogl_matrix.t
  val matrix_translate : matrix:Ogl_matrix.t -> float * float * float -> unit
end