Update
[llpp.git] / lablGL / glDraw.ml
blob8d0307084786c5b2b4850daf48ea1eb02011ba97
1 (* $Id: glDraw.ml,v 1.6 2007-04-13 01:17:50 garrigue Exp $ *)
3 open Gl
5 external color : red:float -> green:float -> blue:float -> alpha:float -> unit
6 = "ml_glColor4d"
7 let color ?(alpha=1.) (red, green, blue : rgb) =
8 color ~red ~green ~blue ~alpha
10 external index : float -> unit = "ml_glIndexd"
12 external cull_face : face -> unit = "ml_glCullFace"
13 external edge_flag : bool -> unit = "ml_glEdgeFlag"
14 external front_face : [`cw|`ccw] -> unit = "ml_glFrontFace"
16 external line_width : float -> unit = "ml_glLineWidth"
17 external line_stipple : factor:int -> pattern:short -> unit
18 = "ml_glLineStipple"
19 let line_stipple ?(factor=1) pattern =
20 line_stipple ~factor ~pattern
21 external point_size : float -> unit = "ml_glPointSize"
23 external polygon_offset : factor:float -> units:float -> unit
24 = "ml_glPolygonOffset"
25 external polygon_mode : face:face -> [`point|`line|`fill] -> unit
26 = "ml_glPolygonMode"
27 external polygon_stipple : [`bitmap] Raw.t -> unit = "ml_glPolygonStipple"
28 let polygon_stipple (img : GlPix.bitmap) =
29 if GlPix.height img <> 32 || GlPix.width img <> 32
30 then invalid_arg "GlDraw.polygon_stipple";
31 polygon_stipple (GlPix.to_raw img)
33 external shade_model : [`flat|`smooth] -> unit = "ml_glShadeModel"
35 type shape =
36 [ `points | `lines | `polygon | `triangles | `quads | `line_strip
37 | `line_loop | `triangle_strip | `triangle_fan | `quad_strip ]
38 external begins : shape -> unit = "ml_glBegin"
39 external ends : unit -> unit = "ml_glEnd"
41 external normal : x:float -> y:float -> z:float -> unit
42 = "ml_glNormal3d"
43 let normal ?(x=0.) ?(y=0.) ?(z=0.) () = normal ~x ~y ~z
44 and normal3 (x,y,z) = normal ~x ~y ~z
46 external rect : point2 -> point2 -> unit = "ml_glRectd"
48 external vertex : x:float -> y:float -> ?z:float -> ?w:float -> unit -> unit
49 = "ml_glVertex"
50 let vertex2 (x,y : point2) = vertex ~x ~y ()
51 and vertex3 (x,y,z : point3) = vertex ~x ~y ~z ()
52 and vertex4 (x,y,z,w : point4) = vertex ~x ~y ~z ~w ()
54 external viewport : x:int -> y:int -> w:int -> h:int -> unit
55 = "ml_glViewport"