I'm working on a project where I need to support users uploading models + textures onto my servers, where they will be distributed to other connected users. Of course, this requires that I choose one (or a handful) of supported file formats for models and textures. I'm not too worried about models - once the data is loaded I will probably be using my own internal format for storage. Textures, on the other hand are a bit trickier. In the interest of not re-inventing the wheel, I don't want to mess around with rolling my own compressed format, and I don't want to store uncompressed images for obvious reasons. After comparing formats, I settled on PNG for storing/transmitting textures internally for the following reasons:
- They're lossless and reasonably well compressed.
- They support full 32-bit color.
- They support transparency.
- They're not stored in DDS or other compressed formats that mobile and older desktop GPUs will/may bork on.
- I've used them for textures before and never had issues.
Taken as a whole, all of these reasons make PNG textures look like a decent option. Much to my surprise, however... jME doesn't have a PNG loader. Loading the image really isn't a problem for me - Java's good ol' built in ImageIO can load a byte array from a PNG file, and there are plenty of other loading options too. However, the fact that the engine doesn't have a PNG loader makes me wonder if I've missed something important. Is there a particular reason why PNG textures are undesirable for textures and thus unsupported by the engine, or is this just a case of PNGs not being needed because the previously supported formats suffice?