J'apprends SDL 2.0 en ce moment et j'ai vu cette méthode pour charger des BMP:
SDL_Texture* LoadImage(std::string file)
{
SDL_Surface *loadedImage = nullptr;
SDL_Texture *texture = nullptr;
loadedImage = SDL_LoadBMP(file.c_str());
if (loadedImage != nullptr)
{
texture = SDL_CreateTextureFromSurface(renderer, loadedImage);
SDL_FreeSurface(loadedImage);
}
else
std::cout << SDL_GetError() << std::endl;
return texture;
}
Comment pourrais-je le changer pour charger des fichiers PNG?
EDIT: Woops, j'ai oublié d'ajouter ma méthode de chargement des fichiers PNG.
SDL_Texture* grass_image = nullptr;
grass_image = IMG_LoadTexture(renderer, "res/grass.bmp");
SDL_Rect grass_rect;
grass_rect.x = 0;
grass_rect.y = 0;
grass_rect.w = SCREEN_WIDTH;
grass_rect.h = SCREEN_HEIGHT;
if (grass_image == NULL)
std::cout << "Couldn't load grass_image" << std::endl;
while (!quit && mainEvent -> type != SDL_Quit)
{
SDL_RenderCopy(renderer, grass_image, NULL, &grass_rect);
}
Je ne veux juste pas avoir à faire ça pour CHAQUE image. Alors, comment pourrais-je mettre cela dans une fonction?
Merci!
Réponses:
Vous devez utiliser l'API SDL_Image, elle a une fonction simple qui charge tout:
Plus précisément, il charge les formats de vignettes ICO (Icon) / CUR (Cursor) / BMP, PNM (PPM / PGM / PBM), XPM, LBM (IFF ILBM), PCX, GIF, JPEG, PNG, TGA, TIFF et XV. .
Il a également des fonctions de format individuelles telles que
IMG_isPNG
etIMG_LoadPNG_RW
.Cette bibliothèque est l'une des plus utilisées pour le chargement de fichiers image avec SDL, je pense.
Site Web et documentation
la source
Pour charger des fichiers PNG avec SDL, vous devez avoir l'extension de bibliothèque SDL_Image.
http://www.libsdl.org/projects/SDL_image
Une description de cette extension de bibliothèque:
"SDL_image est une bibliothèque de chargement de fichiers image. Elle charge les images en tant que surfaces SDL et prend en charge les formats suivants: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, WEBP, XCF, XPM, XV."
la source
Exemple exécutable minimal de SDL_image SDL 2
principal c
GitHub en amont .
Compiler et exécuter:
Résultat:
Testé sur Ubuntu 16.04, GCC 6.4.0, SDL 2.0.4, SDL Image 2.0.1.
la source
IMG_LoadTexture()
.