cara memasukkan gambar menggunakan sdl

08.31 0 Comments

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 ...

Mufty Laudza Farhan

Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.

0 komentar: