let set_and_transform
    t
    final_transform
    ?wrap
    ?filter
    ?internal_format
    ?source_format
    ?shadow_comparison
    ?shadow_compare_func
    ?shadow_texture_mode
    ?shadow_ambient
    ?images
    ()
    =
  (match wrap   with Some w     -> List.iter (fun (p, m) -> set_wrap t p m) w  | _ -> ());
  (match filter with Some f     -> List.iter (fun (p, m) -> set_filter t p m) f  | _ -> ());
  (match internal_format  with Some i -> set_internal_format t i      | _ -> ());
  (match source_format  with Some s -> set_source_format t s      | _ -> ());
  (match shadow_comparison  with Some sc -> set_shadow_comparison t sc      | _ -> ());
  (match shadow_compare_func     with Some scf -> set_shadow_compare_func t scf     | _ -> ());
  (match shadow_texture_mode     with Some stm -> set_shadow_texture_mode t stm     | _ -> ());
  (match shadow_ambient    with Some sa -> set_shadow_ambient t sa   | _ -> ());
  (match images with Some i     -> List.iter (fun (f, i) -> set_image t f i) i | _ -> ());
  final_transform t