Сейчас я изучаю SDL 2.0, и я видел этот метод для загрузки 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;
}
Как я мог переключить это, чтобы загрузить файлы PNG?
РЕДАКТИРОВАТЬ: Woops, забыл добавить мой метод загрузки 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);
}
Я просто не хочу делать это для КАЖДОГО изображения. Так, как я мог поместить это в функцию?
Спасибо!
Ответы:
Вы должны использовать API SDL_Image, он имеет одну простую функцию, которая загружает все:
Точнее, он загружает форматы миниатюр ICO (значок) / CUR (курсор) / BMP, PNM (PPM / PGM / PBM), XPM, LBM (IFF ILBM), PCX, GIF, JPEG, PNG, TGA, TIFF и XV. ,
Он также имеет отдельные функции формата, такие как
IMG_isPNG
иIMG_LoadPNG_RW
.Я думаю, эта библиотека является одной из наиболее часто используемых для загрузки файлов изображений с помощью SDL.
Веб-сайт и документация
источник
Для загрузки файлов PNG с SDL необходимо иметь расширение библиотеки SDL_Image.
http://www.libsdl.org/projects/SDL_image
Описание этого расширения библиотеки:
«SDL_image - это библиотека загрузки файлов изображений. Она загружает изображения в виде поверхностей SDL и поддерживает следующие форматы: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, WEBP, XCF, XPM, XV».
источник
SDL 2 SDL_image минимальный исполняемый пример
main.c
GitHub вверх по течению .
Скомпилируйте и запустите:
Результат:
Протестировано на Ubuntu 16.04, GCC 6.4.0, SDL 2.0.4, SDL Image 2.0.1.
источник
IMG_LoadTexture()
.