1 (* $Id: glMat.ml,v 1.11 2005-10-28 02:49:09 garrigue Exp $ *)
3 type t
= [`double
] Raw.t
6 x
:(float * float) -> y
:(float * float) -> z
:(float * float) -> unit
9 external load_identity
: unit -> unit = "ml_glLoadIdentity"
11 external get_matrix
: [`modelview_matrix
|`projection_matrix
|`texture_matrix
] -> t
-> unit = "ml_glGetDoublev"
13 let model = Raw.create `double ~len
:16 in
14 get_matrix mode
model;
17 external mode
: [`modelview
|`projection
|`texture
] -> unit
20 external pop
: unit -> unit = "ml_glPopMatrix"
21 external push
: unit -> unit = "ml_glPushMatrix"
23 external rotate
: angle
:float -> x
:float -> y
:float -> z
:float -> unit
25 let rotate3 ~angle
(x
,y
,z
) = rotate ~angle ~x ~y ~z
26 let rotate ~angle ?
(x
=0.) ?
(y
=0.) ?
(z
=0.) () = rotate ~angle ~x ~y ~z
28 external scale
: x
:float -> y
:float -> z
:float -> unit = "ml_glScaled"
29 let scale3 (x
,y
,z
) = scale ~x ~y ~z
30 let scale ?
(x
=0.) ?
(y
=0.) ?
(z
=0.) () = scale ~x ~y ~z
32 external translate
: x
:float -> y
:float -> z
:float -> unit = "ml_glTranslated"
33 let translate3 (x
,y
,z
) = translate ~x ~y ~z
34 let translate ?
(x
=0.) ?
(y
=0.) ?
(z
=0.) () = translate ~x ~y ~z