A textura é geralmente uma imagem 2D, a qual é aplicada a um objeto 2D ou 3D com a finalidade de aumentar o realismo visual.
O Mapeamento de textura se refere ao processo de como essa aplicação é feito, de como mapear as coordenas da imagem para as coordenadas do objeto
O mapeamento de textura pode ser dado em coordenadas de ponto flutuante ou em coordenadas inteiras. Ele envolve em dar a cada vértice/pixel uma coordenada de textura, o qual atriburá um pixel da imagem de textura (texel) aquele vértice/textura.
Um exemplo de um objeto com e sem mapeamento de textura pode ser visto na figura abaixo. O objeto em questão, um tanque, é representado na figura 1 sem nenhum textura, apenas com cores distintadas pintadas em cada parte do tanque. Já a figura 2 aplica texturas nestas partes. Nota-se que a figura 2 parece muito mais real do que a figura 1.
Fonte: Wikipedia - http://en.wikipedia.org/wiki/Texture_mapping
Segue abaixo uma figura de um quadrado em que é aplicado um mapeamento de textura
O código fonte deste exemplo pode ser baixado | aqui.
O mapeamento de textura do exemplo dado é facilitado pelo uso da biblioteca DevIL. Segue abaixo a função que carrega a textura:
void loadTexture(){ ilInit(); iluInit(); ilutInit(); ilutRenderer( ILUT_OPENGL ); ILuint image; ilGenImages( 1, &image ); ilBindImage(image); // corrigir o caminho da imagem // prvavelmente vai ter de ser tirado o ../ if( !ilLoadImage( "../lighthouse.jpg" )){ puts("nao foi possivel carregar a imagem"); exit(-1); } ilutGLBindTexImage(0); // substitui a cor de origem ao invés de se misturar com ela glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); }