sig
  type t
  val create : unit -> GluQuadric.t
  val cylinder :
    base:float ->
    top:float ->
    height:float ->
    slices:int -> stacks:int -> ?quad:GluQuadric.t -> unit -> unit
  val disk :
    inner:float ->
    outer:float ->
    slices:int -> loops:int -> ?quad:GluQuadric.t -> unit -> unit
  val partial_disk :
    inner:float ->
    outer:float ->
    slices:int ->
    loops:int ->
    start:float -> sweep:float -> ?quad:GluQuadric.t -> unit -> unit
  val sphere :
    radius:float ->
    slices:int -> stacks:int -> ?quad:GluQuadric.t -> unit -> unit
  val draw_style :
    GluQuadric.t -> [ `fill | `line | `point | `silhouette ] -> unit
  val normals : GluQuadric.t -> [ `flat | `none | `smooth ] -> unit
  val orientation : GluQuadric.t -> [ `inside | `outside ] -> unit
  val texture : GluQuadric.t -> bool -> unit
end