# Module GlDraw

    module GlDraw: sig .. end

    val color : ?alpha:float -> Gl.rgb -> unit

    val index : float -> unit

    val cull_face : Gl.face -> unit

    val front_face : [ `ccw | `cw ] -> unit

    val edge_flag : bool -> unit

    val line_width : float -> unit

    val line_stipple : ?factor:int -> Gl.short -> unit

    val point_size : float -> unit

    val polygon_offset : factor:float -> units:float -> unit

    val polygon_mode : face:Gl.face -> [ `fill | `line | `point ] -> unit

    val polygon_stipple : GlPix.bitmap -> unit

    val shade_model : [ `flat | `smooth ] -> unit

    val normal : ?x:float -> ?y:float -> ?z:float -> unit -> unit

    val normal3 : Gl.vect3 -> unit

    val rect : Gl.point2 -> Gl.point2 -> unit

    type shape = [ `line_loop
           | `line_strip
           | `lines
           | `points
           | `polygon
           | `quad_strip
           | `quads
           | `triangle_fan
           | `triangle_strip
           | `triangles ]

    val begins : shape -> unit

    val ends : unit -> unit

    val vertex : x:float -> y:float -> ?z:float -> ?w:float -> unit -> unit

    val vertex2 : Gl.point2 -> unit

    val vertex3 : Gl.point3 -> unit

    val vertex4 : Gl.point4 -> unit

    val viewport : x:int -> y:int -> w:int -> h:int -> unit