Hi Gem people,
After the various discussions on image formats I've delved into the possibilities of using C++ generic programming (templates) for efficient, data format independent image processing code.
I started working on some proof of concept classes with a mind to testing just how good/bad the performance would actually be in practice. Then I decided to do the google sanity check to see if anyone had done this before... and the answer is yes.
Ullrich Koethe has developed a library called VIGRA which provides generic programming classes for computer vision... and has published some papers giving performance comparisons: http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/
So... it certainly is possible to use templates to good effect for the image format problem. Whether VIGRA is a good fit for GEM I haven't yet established...
I'll continue to look into this unless anyone can point out why this might be a waste of time...
In other business: nvidia has included a NV_pixel_data_range extension in its latest list of published extensions: http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_pixel_data_range.txt
this should allow much faster texture uploads under windows and linux when using nvidia drivers.
This introduces the more general problem of how to handle openGL extensions under GEM. At the moment extensions are handled at compile time and in a fairly ad-hoc way... perhaps something like GLEW would be useful (altho it doesnt support OS X) http://glew.sourceforge.net/
Daniel