cara memasukkan gambar menggunakan sdl
memasukkan gambar menggunakan sdl
jadi , gimana cara masukkin gambar menggunakan sdl? , caranya cukup mudah dan singkat guys . saya akan menunjukkan cara ini agar kalian tidak menggunakan bitmap (BMP) yang ukuran filenya terlalu besar dan tidak mendukung transparansi alpha , dan untuk mulai menggunakan format file lainnya seperti PNG , dll .
hal pertama yang perlu anda lakukan adalah mendownload SDL_image , versi terbaru dari website utama . anda juga dapat mengambil file ini dari perpustakaan SDL dan anda dapat membuat segalanya menjadi lebih mudah XD .
Mulailah dengan membuka project anda , dan dibawah akan ada pengaturan linker . Tambahkan SDL_image setelah SDLmain seperti ini :
mingw32
SDLmain
SDL_image
SDL
pertama , buka CSurface.h , sehingga kita dapat mencakup file header tambahan :
#ifndef _CSURFACE_H_
#define _CSURFACE_H_
#include <SDL.h>
#include <SDL_image.h>
Setelah itu semua dilakukan, buka CSurface.cpp dan cari fungsi onload. kode yang terlihat saat ini adalah :
SDL_Surface* CSurface::OnLoad(
char
* File) {
SDL_Surface* Surf_Temp = NULL;
SDL_Surface* Surf_Return = NULL;
if
((Surf_Temp = SDL_LoadBMP(File)) == NULL) {
return
NULL;
}
Surf_Return = SDL_DisplayFormat(Surf_Temp);
SDL_FreeSurface(Surf_Temp);
return
Surf_Return;
}
Ada dua perubahan untuk membuat ini, yang pertama adalah mengubah SDL_LoadBMP untuk IMG_Load. Yang kedua adalah mengubah SDL_DisplayFormat untuk SDL_DisplayFormatAlpha. Ingat Saya mengatakan BMP tidak mendukung lapisan alpha? Nah, PNGs lakukan! Dan jika Anda ingin menjaga lapisan alpha Anda harus menggunakan SDL_DisplayFormatAlpha bukan SDL_DisplayFormat. Jadi, kode kita akan terlihat seperti ini sekarang:
SDL_Surface* CSurface::OnLoad(
char
* File) {
SDL_Surface* Surf_Temp = NULL;
SDL_Surface* Surf_Return = NULL;
if
((Surf_Temp = IMG_Load(File)) == NULL) {
return
NULL;
}
Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp);
SDL_FreeSurface(Surf_Temp);
return
Surf_Return;
}
Akhirnya, jangan lupa untuk mengubah nama file yang Test Permukaan sedang mencoba untuk memuat di CApp_OnInit.cpp:
if
((Surf_Test = CSurface::OnLoad(
"myimage.png"
)) == NULL) {
return
false
;
}
Dan kita selesai! Saya bilang itu akan singkat. Coba kompilasi, dan mencoba format file yang berbeda. Beberapa format umum yang didukung oleh SDL_image adalah:
BMP
GIF
PNG
JGP
PCX
TIF
dan lainnya ...
0 komentar: