J'ai essayé sa :
//code opengl
//texture
sf::Texture texture;
texture.loadFromFile("image.png")
//boucle principale
sf::Texture::bind(&texture);
//déssin opengl
sf::Texture::bind(NULL);
//actualisation la fenetre
J'ai trouvé des solution mais il sont que valable dans les ancienne version opengl moi j'utilise la version 3.3 .
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);
Je enfaite c'est pour créé une classe pour charger une texture je vous la montre :
Texture.h
class Texture
{
public:
Texture(std::string fichierImage);
virtual ~Texture();
GLuint getID() const;
void setFichierImage(const std::string &fichierImage);
private:
GLuint m_id;
std::string m_fichierImage;
};
Texture.cpp
Texture::Texture(std::string fichierImage)
{
//vide pour le moment j'essaye de trouvé une solution pour pouvoir charger la texture
}
Texture::~Texture()
{
//dtor
}