Pickle wrote:well the palette textures only came up as a method for texture compression that is "supported" by BCM in order to meet GLES 1.X specs,
So im not sold on them, and if I went with a programmable renderer I would need to see what all the options are (though it seems to be very few)
I was thinking the ETC1 with RGB only would not work well. In this project there are mainly 2 textures types. A group with alpha and another set with colorkeying. In order to make it support the colorkeyed images I convert the colorkey into alpha.
In order to use the RGB the image would need to cover the entire size of the image, and there are just not enough of those.
Well, if you're not set on paletted textures then I'd echo what was already suggested earlier - go with etc1 for the RGB and keep the alpha in a separate 8bpp texture. That also gives you the advantage that you can decouple the color res from the alpha res.
Im also converting NPOT images to POT, so theres some waste there.
But im also shrinking some images resolutions by half.
VC IV does NPOT, you can use that if the code would not need much of a fixup.
One other I havnt been too sure on is when using glTexImage does the type matter for the final internal structure? I assume it is not since the internal format will be GL_RGBA, so i expect the type is only used to convert each pixel to the full RGBA.
Well, yes and no.
Yes, in the sense that generally you're correct, in the traditional desktop GL there are plethora of seamless conversions that could facilitate the transformation from the input format & type to the internal format. With GLES, though, things are a tad different - conversions are minimized, so the internal format is normally expected to match the input format, on-the-fly-compression & paletted textures non-withstanding. The general rule of thumb is, the stack with try to select an internal format which both meets the base internal format you've specified (RGBA, RGB, etc), and matches the precision of the input type, which given the few formats the core standard supports, is not so hard. So, an RGB565 input type will likely end up as RGB565 internal format, quite possibly without even as much as a swizzle during the actual internal storing. The conversion to 'full RGBA' you're referring to may not happen at the stage of internal storage, but as late as during actual texel fetching, where it all goes to fp anyway.