1 type skin
= (float * float * float * int) array
2 type skel
= (int * float array
) array
3 type anim
= Qtr.t array
4 type vertices
= float array
5 type normals
= float array
6 type coords
= float array
9 external init
: bool -> (vertices
* normals
* coords
* skin
* string) -> unit
12 external draw_begin
: unit -> unit = "ml_skin_draw_begin"
13 external draw_end
: unit -> unit = "ml_skin_draw_end"
15 external set_skel
: skel
-> unit = "ml_skin_set_skel"
16 external set_anim
: anim
-> unit = "ml_skin_set_anim"
17 external anim
: unit -> unit = "ml_skin_anim"
22 string -> bool -> (vertices
* normals
* coords
* skin
* string) -> unit
25 external draw_begin
: unit -> unit = "ml_skin_draw_begin_vp"
26 external draw_end
: unit -> unit = "ml_skin_draw_end_vp"
28 external set_skel
: skel
-> unit = "ml_skin_set_skel_vp"
29 external set_anim
: anim
-> unit = "ml_skin_set_anim_vp"
30 external anim
: unit -> unit = "ml_skin_anim_vp"
33 let sw = object (self
)
35 method draw_begin
= SW.draw_begin
36 method draw_end
= SW.draw_end
37 method set_skel
= SW.set_skel
38 method set_anim
= SW.set_anim
42 let hw prog
= object (self
)
43 method init
= HW.init prog
44 method draw_begin
= HW.draw_begin
45 method draw_end
= HW.draw_end
46 method set_skel
= HW.set_skel
47 method set_anim
= HW.set_anim
54 if String.length path
= 0
57 if Glut.extensionSupported
"GL_ARB_vertex_program"
60 let ic = open_in path
in
61 let b = Buffer.create
100 in
64 Buffer.add_string
b (input_line
ic);
65 Buffer.add_char
b '
\n'
;
67 with End_of_file
-> ()
73 Format.eprintf
"GL_ARB_vertex_program not supported falling back to sw@.";
79 let init a
= !skin#
init a
;;
80 let draw_begin a
= !skin#
draw_begin a
;;
81 let draw_end a
= !skin#
draw_end a
;;
82 let set_skel a
= !skin#
set_skel a
;;
83 let set_anim a
= !skin#
set_anim a
;;
84 let anim a
= !skin#
anim a
;;