# Module GlMisc

    module GlMisc: sig .. end

    val get_string : [ `extensions | `renderer | `vendor | `version ] -> string

    val check_extension : string -> bool

    type equation = float * float * float * float

    val clip_plane : plane:int -> equation -> unit

    type hint_target = [ `fog
           | `line_smooth
           | `perspective_correction
           | `point_smooth
           | `polygon_smooth ]

    val hint : hint_target -> [ `dont_care | `fastest | `nicest ] -> unit

    val init_names : unit -> unit

    val load_name : int -> unit

    val push_name : int -> unit

    val pop_name : unit -> unit

    type attrib = [ `accum_buffer
           | `color_buffer
           | `current
           | `depth_buffer
           | `enable
           | `eval
           | `fog
           | `hint
           | `lighting
           | `line
           | `list
           | `pixel_mode
           | `point
           | `polygon
           | `polygon_stipple
           | `scissor
           | `stencil_buffer
           | `texture
           | `transform
           | `viewport ]

    val push_attrib : attrib list -> unit

    val pop_attrib : unit -> unit

    val render_mode : [ `feedback | `render | `select ] -> int

    val pass_through : float -> unit

    val select_buffer : [ `uint ] Raw.t -> unit

    type feedback_mode = [ `_2d | `_3d | `_3d_color | `_3d_color_texture | `_4d_color_texture ]

    val feedback_buffer : mode:feedback_mode -> [ `float ] Raw.t -> unit

    val scissor : x:int -> y:int -> width:int -> height:int -> unit