Pour information j'essaye de reproduire sa
le code ne vient pas de moi c'est un tutorielle opengl que je suit.
bool Texture::charger()
{
// Chargement de l'image dans une surface SDL
SDL_Surface *imageSDL = IMG_Load(m_fichierImage.c_str());
if(imageSDL == 0)
{
std::cout << "Erreur : " << SDL_GetError() << std::endl;
return false;
}
// Génération de l'ID
glGenTextures(1, &m_id);
// Verrouillage
glBindTexture(GL_TEXTURE_2D, m_id);
// Format de l'image
GLenum formatInterne(0);
GLenum format(0);
// Détermination du format et du format interne pour les images à 3 composantes
if(imageSDL->format->BytesPerPixel == 3)
{
// Format interne
formatInterne = GL_RGB;
// Format
if(imageSDL->format->Rmask == 0xff)
format = GL_RGB;
else
format = GL_BGR;
}
// Détermination du format et du format interne pour les images à 4 composantes
else if(imageSDL->format->BytesPerPixel == 4)
{
// Format interne
formatInterne = GL_RGBA;
// Format
if(imageSDL->format->Rmask == 0xff)
format = GL_RGBA;
else
format = GL_BGRA;
}
// Dans les autres cas, on arrête le chargement
else
{
std::cout << "Erreur, format interne de l'image inconnu" << std::endl;
SDL_FreeSurface(imageSDL);
return false;
}
// Copie des pixels
glTexImage2D(GL_TEXTURE_2D, 0, formatInterne, imageSDL->w, imageSDL->h, 0, format, GL_UNSIGNED_BYTE, imageSDL->pixels);
// Application des filtres
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// Déverrouillage
glBindTexture(GL_TEXTURE_2D, 0);