sig
  type t
  external to_state_attribute : Osg.Texture.t -> Osg.State_attribute.t
    = "texture_to_state_attribute"
  type wrap_parameter = WRAP_S | WRAP_T | WRAP_R
  type wrap_mode = CLAMP | CLAMP_TO_EDGE | CLAMP_TO_BORDER | REPEAT | MIRROR
  external set_wrap :
    Osg.Texture.t ->
    Osg.Texture.wrap_parameter -> Osg.Texture.wrap_mode -> unit
    = "texture_set_wrap"
  type filter_parameter = MIN_FILTER | MAG_FILTER
  type filter_mode =
      LINEAR
    | LINEAR_MIPMAP_LINEAR
    | LINEAR_MIPMAP_NEAREST
    | NEAREST
    | NEAREST_MIPMAP_LINEAR
    | NEAREST_MIPMAP_NEAREST
  external set_filter :
    Osg.Texture.t ->
    Osg.Texture.filter_parameter -> Osg.Texture.filter_mode -> unit
    = "texture_set_filter"
  type internal_format_mode =
      USE_IMAGE_DATA_FORMAT
    | USE_USER_DEFINED_FORMAT
    | USE_ARB_COMPRESSION
    | USE_S3TC_DXT1_COMPRESSION
    | USE_S3TC_DXT3_COMPRESSION
    | USE_S3TC_DXT5_COMPRESSION
  type internal_format =
      ONE_COMPONENT
    | TWO_COMPONENTS
    | THREE_COMPONENTS
    | FOUR_COMPONENTS
    | GL_ALPHA
    | GL_ALPHA4
    | GL_ALPHA8
    | GL_ALPHA12
    | GL_ALPHA16
    | GL_LUMINANCE
    | GL_LUMINANCE4
    | GL_LUMINANCE8
    | GL_LUMINANCE12
    | GL_LUMINANCE16
    | GL_LUMINANCE_ALPHA
    | GL_LUMINANCE4_ALPHA4
    | GL_LUMINANCE6_ALPHA2
    | GL_LUMINANCE8_ALPHA8
    | GL_LUMINANCE12_ALPHA4
    | GL_LUMINANCE12_ALPHA12
    | GL_LUMINANCE16_ALPHA16
    | GL_INTENSITY
    | GL_INTENSITY4
    | GL_INTENSITY8
    | GL_INTENSITY12
    | GL_INTENSITY16
    | GL_R3_G3_B2
    | GL_RGB
    | GL_RGB4
    | GL_RGB5
    | GL_RGB8
    | GL_RGB10
    | GL_RGB12
    | GL_RGB16
    | GL_RGBA
    | GL_RGBA2
    | GL_RGBA4
    | GL_RGB5_A1
    | GL_RGBA8
    | GL_RGB10_A2
    | GL_RGBA12
    | GL_RGBA16
    | GL_DEPTH_COMPONENT
    | GL_DEPTH_COMPONENT16_ARB
    | GL_DEPTH_COMPONENT24_ARB
    | GL_DEPTH_COMPONENT32_ARB
  external set_internal_format :
    Osg.Texture.t -> Osg.Texture.internal_format -> unit
    = "texture_set_internal_format"
  external set_source_format :
    Osg.Texture.t -> Osg.Texture.internal_format -> unit
    = "texture_set_source_format"
  type shadow_compare_func = LEQUAL | GEQUAL
  type shadow_texture_mode = LUMINANCE | INTENSITY | ALPHA
  external set_shadow_comparison : Osg.Texture.t -> bool -> unit
    = "texture_set_shadow_comparison"
  external set_shadow_compare_func :
    Osg.Texture.t -> Osg.Texture.shadow_compare_func -> unit
    = "texture_set_shadow_compare_func"
  external set_shadow_texture_mode :
    Osg.Texture.t -> Osg.Texture.shadow_texture_mode -> unit
    = "texture_set_shadow_texture_mode"
  external set_shadow_ambient : Osg.Texture.t -> float -> unit
    = "texture_set_shadow_ambient"
  external set_image : Osg.Texture.t -> int -> Osg.Image.t -> unit
    = "texture_set_image"
  val set_and_transform :
    Osg.Texture.t ->
    (Osg.Texture.t -> 'a) ->
    ?wrap:(Osg.Texture.wrap_parameter * Osg.Texture.wrap_mode) list ->
    ?filter:(Osg.Texture.filter_parameter * Osg.Texture.filter_mode) list ->
    ?internal_format:Osg.Texture.internal_format ->
    ?source_format:Osg.Texture.internal_format ->
    ?shadow_comparison:bool ->
    ?shadow_compare_func:Osg.Texture.shadow_compare_func ->
    ?shadow_texture_mode:Osg.Texture.shadow_texture_mode ->
    ?shadow_ambient:float -> ?images:(int * Osg.Image.t) list -> unit -> 'a
end