Saya sedang belajar SDL 2.0 saat ini dan saya telah melihat metode ini untuk memuat 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;
}
Bagaimana saya bisa mengaktifkannya untuk memuat file PNG?
EDIT: Woops, lupa menambahkan metode saya memuat 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);
}
Saya hanya tidak mau harus melakukan itu untuk SETIAP gambar. Jadi bagaimana saya bisa menjalankannya?
Terima kasih!
Jawaban:
Anda harus menggunakan SDL_Image API, ia memiliki satu fungsi sederhana yang memuat semuanya:
Lebih tepatnya, ini memuat ICO (Ikon) / CUR (Kursor) / BMP, PNM (PPM / PGM / PBM), XPM, LBM (IFF ILBM), PCX, GIF, JPEG, PNG, TGA, TIFF, dan format thumbnail XV .
Ini juga memiliki fungsi format individual seperti
IMG_isPNG
danIMG_LoadPNG_RW
.Lib ini adalah salah satu yang paling umum digunakan untuk memuat file gambar dengan SDL, saya pikir.
Situs web dan Dokumentasi
sumber
Untuk memuat file PNG dengan SDL Anda harus memiliki ekstensi perpustakaan SDL_Image.
http://www.libsdl.org/projects/SDL_image
Deskripsi ekstensi perpustakaan ini:
"SDL_image adalah pustaka pemuatan file gambar. Ini memuat gambar sebagai permukaan SDL, dan mendukung format berikut: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, WEBP, XCF, XPM, XV."
sumber
SDL 2 SDL_image contoh runnable minimal
main.c
GitHub hulu .
Kompilasi dan jalankan:
Hasil:
Diuji pada Ubuntu 16.04, GCC 6.4.0, SDL 2.0.4, SDL Image 2.0.1.
sumber
IMG_LoadTexture()
.