A few weeks ago, I realized I really needed a good texture packer to combine a load of odd shaped image into a single texture so that I can get the massive speed boost you get from having everything on one texture.
I couldn't find a program that quite suited my purposes. They either didn't export to 32-bit PNG or they didn't optimize the packing very well, and I was originally planning to update Jim B's ImagePacker to support 32-bit PNG, as the packing itself seemed good.
Anyway, I decided it might be fun to write my own, and boy was I wrong. It was bloody horrible, but it was a great learning experience trying out various things until I got an algorithm that is really tight.
I figured a good test would be to try it with some images from Filax's GUI, as they come in such a wide range of sizes and shapes that they're bound to be very hard to pack neatly into a texture. Indeed they proved very challenging, and pushed me to keep optimizing the pack algorithm over and over until I couldn't see any way I could have done it better by hand.
And so, without further ado, here's a screenshot of the packed texture ( real size, but 256 color-ized so that no one nicks Filax's graphics and so that it loads fast on a webpage. )

At the moment, the application itself is a bit rough around the edges, strictly for personal use. But I'm thinking of doing it up a bit, adding support for a few more formats ( jpg, tga, perhaps BMP ) and selling it for a low price.
It also exports an xml document with the packed texture which you can then use to access each image within your program. If I can find an XML module for BMax, I may even write a quick BlitzMax module to parse the XML and create a list of images and their pixel locations, and sizes on the texture. But you've got the XML document so you could use the packed textures in any language, any engine, you wanted.
It supports variable sized padding already ( to avoid bleeding with texture filtering. I disable filtering for mine, but not everyone will want to. ) but if there are any must-have features you would like to see, name them and I'll see what I can do.
I couldn't find a program that quite suited my purposes. They either didn't export to 32-bit PNG or they didn't optimize the packing very well, and I was originally planning to update Jim B's ImagePacker to support 32-bit PNG, as the packing itself seemed good.
Anyway, I decided it might be fun to write my own, and boy was I wrong. It was bloody horrible, but it was a great learning experience trying out various things until I got an algorithm that is really tight.
I figured a good test would be to try it with some images from Filax's GUI, as they come in such a wide range of sizes and shapes that they're bound to be very hard to pack neatly into a texture. Indeed they proved very challenging, and pushed me to keep optimizing the pack algorithm over and over until I couldn't see any way I could have done it better by hand.
And so, without further ado, here's a screenshot of the packed texture ( real size, but 256 color-ized so that no one nicks Filax's graphics and so that it loads fast on a webpage. )

At the moment, the application itself is a bit rough around the edges, strictly for personal use. But I'm thinking of doing it up a bit, adding support for a few more formats ( jpg, tga, perhaps BMP ) and selling it for a low price.
It also exports an xml document with the packed texture which you can then use to access each image within your program. If I can find an XML module for BMax, I may even write a quick BlitzMax module to parse the XML and create a list of images and their pixel locations, and sizes on the texture. But you've got the XML document so you could use the packed textures in any language, any engine, you wanted.
It supports variable sized padding already ( to avoid bleeding with texture filtering. I disable filtering for mine, but not everyone will want to. ) but if there are any must-have features you would like to see, name them and I'll see what I can do.