Texture maps are bit map images that are applied to 3D objects. They are used to add
realistic surface detail without increasing the complexity of the geometry in a 3D scene.
Textures can be anything from wood grain or marble patterns to complex pictures of people,
buildings, trees, etc. To simulate real life scenes, it is desirable to have access to a
large number of detailed textures. However, this places significant demands on system or
graphics memory (depending on where the textures are stored), forcing application
developers to use fewer and less detailed textures in order to match a limited amount of
memory storage and bandwidth.
The Accelerated Graphics Port (AGP) has made it possible to access textures directly
from system memory increasing overall available storage. However, AGP and the system
memory interface are shared resources. Besides textures, AGP is also used for passing
geometry data, while system memory is used to store and run the operating system and
applications. So, it should not be assumed that all system memory bandwidth will be
available for reading texture data. Given this, making the most of the bandwidth that is
available is critical to a graphics subsystem optimized for AGP texturing.
New games tend to use more and bigger texture maps, texture maps can go up to
1024x1024. Games will also use high-resolution texture maps. Storing these 2D images
uncompressed uses up the texture ram very fast. Adding more and more texture ram to a card
is expensive and AGP is not always as fast as we want.
Therefore, there are 2 good reasons to use texture
map compression. First reason: place more texture maps in the same amount of memory or
place bigger texture maps in the same amount of Texture Memory. The second reason: safe
bandwidth (less data has to be fetched and transferred from memory).