Foo [res 128x64].png
This can be used to store a texture at a different resolution without
having to change all of the metrics that reference it.
The most obvious use is to lower the resolution of large images.
A less obvious use is to raise the resolution of images. If an image is
going to be zoomed, it may be useful to store the texture at a higher
resolution than native.
This can be done with metrics, but it's a pain to have to track down
each metric that needs to be changed. This (should) also work with
fonts (but that needs testing).
Use this sparingly.
The most immediate use of this is for the company screen shadow;
it's horribly banded in 16-bit, and this lets us load it as an 8-bit texture,
using half the memory and giving full precision.
This could be automatically used, if all non-transparent pixels in a texture
are #FFFFFF. (todo)
This can also allow us to have extremely large, memory-compact fonts.
A 1024x1024 layer in ALPHA4 is just 512k, and can store several thousand
16x16 glyphs. (The only trouble is actually constructing such a font;
doing it by hand in Photoshop isn't a nice option.)
GL_COLOR_TABLE_FORMAT_EXT; it's defined in glext.h
(we could enable this if the imaging subset is defined, too, but checking
for the extension version is probably good enough)
Simplify texture handling: m_ID is const (can't be changed after
load at all); preference overrides are handled in RageTexture;
reloads no longer need a parameter
Handle extreme resizing iteratively, which gives us something like
a triangle filter--slower and probably not quite as good, but much
better than it was.