Texture data memory issues

I am working on an application that loads really big images to display as textures mapped either in the background or mapped to a 3d triangulated surface.

However, because of the size of the images, I have generated up to 30 textures or more at the maximum texture size to render the whole thing. As a result, it’s easy to run out of memory because OpenGL is storing all the color data (3 bytes per pixel).

Is there some way to store the texture data in a compressed format inside of OpenGL? I really need to try and use up less memory if possible for storing the textures in OpenGL. Our machines often have to resort to virtual memory because it is so much data.

Maybe one of these:

  1. Convert your textures from 24-bit (888) to 16-bit (565). That will cut the size to 1/2.
  2. Convert your textures from 24-bit (888) to 8-bit palettized. That will cut the size to 1/3.
  3. Compress your textures using S3TC (aka DXTC) on cards that support it. That will cut the size to 1/6.

In addition to (or instead of) the above, you could reduce the resolution of the texture by 1/2 in each direction. That will cut to size to 1/4.