11 result += "\\%03o"%ord(c)
16 def make_tex(fn, filter="LINEAR", anisotropy=0, wrap=None):
21 fmt = "".join(img.getbands())
23 fmt = "LUMINANCE_ALPHA"
27 result = "storage %s %d %d;\n"%(fmt, img.size[0], img.size[1])
28 result += "filter %s;\n"%filter
29 if "MIPMAP" in filter:
30 result += "generate_mipmap true;\n"
32 result += "max_anisotropy %d;\n"%anisotropy
34 result += "wrap %s;\n"%wrap
35 result += "raw_data \""
36 data = list(img.getdata())
37 for y in range(img.size[1]):
38 i = (img.size[1]-1-y)*img.size[0]
39 result += escape("".join(["".join([chr(v) for v in p]) for p in data[i:i+img.size[0]]]))
44 if __name__=="__main__":
48 parser = argparse.ArgumentParser()
49 parser.add_argument("-o", "--output", metavar="FILE", help="Output filename")
50 parser.add_argument("-f", "--filter", choices=["NEAREST", "LINEAR", "MIPMAP"], default="LINEAR", help="Filtering mode")
51 parser.add_argument("-a", "--anisotropy", metavar="NUMBER", help="Maximum anisotropy, 0 = disable")
52 parser.add_argument("-w", "--wrap", choices=["REPEAT", "CLAMP_TO_EDGE", "MIRRORED_REPEAT"], help="Wrapping mode")
53 parser.add_argument("image")
55 args = parser.parse_args()
59 filter = "LINEAR_MIPMAP_LINEAR"
63 out_fn = os.path.splitext(args.image)[0]+".tex2d"
64 out = file(out_fn, "w")
65 out.write(make_tex(args.image, filter, args.anisotropy, args.wrap))