1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
FreeImage_Initialise(TRUE);
glMatrixMode(GL_PROJECTION);
FREE_IMAGE_FORMAT fifmt = FreeImage_GetFileType("Uvtest.png", 0);
FIBITMAP *dib = FreeImage_Load(fifmt,"Uvtest.png",0);
// Aucune garanti que l'image soit charger en GL_RGB donc on force FI
// a convertir l'image en GL_RGB
dib = FreeImage_ConvertTo32Bits(dib);
glGenTextures( 1, &g_textureID );
glBindTexture( GL_TEXTURE_2D, g_textureID );
glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR );
// FreeImage charge les images au format BGR donc on echange
// la composante B et R non meme on fait donc les allocation necessaire
BYTE *bits = malloc( FreeImage_GetWidth(dib) * FreeImage_GetHeight(dib) * 3 );
BYTE *pixels = (BYTE*)FreeImage_GetBits(dib);
int pix;
for(pix=0; pix<FreeImage_GetWidth(dib) * FreeImage_GetHeight(dib); pix++)
{
bits[pix*3+2]=pixels[pix*3+2];
bits[pix*3+1]=pixels[pix*3+1];
bits[pix*3+0]=pixels[pix*3+0];
}
glTexImage2D( GL_TEXTURE_2D, 0, 3, FreeImage_GetWidth(dib), FreeImage_GetHeight(dib), 0,GL_RGB, GL_UNSIGNED_BYTE, bits);
FreeImage_Unload(dib);
glBindTexture( GL_TEXTURE_2D, g_textureID ); |
Partager