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

stdarg dalam bahasa pemprogramman C

Stdarg

stdarg.h adalah header di perpustakaan standar C bahasa pemrograman C yang memungkinkan fungsi untuk menerima jumlah yang tak terbatas argumen.
Header ini mendefinisikan macro untuk mengakses argumen individu daftar argumen yang tidak disebutkan namanya yang jumlah dan jenis yang tidak diketahui yang disebut fungsi
Sebuah fungsi dapat menerima berbagai jumlah argumen tambahan tanpa sesuai deklarasi parameter dengan memasukkan koma dan tiga titik (...) setelah parameter bernama reguler.
Format: return_type function_name (parameter_declarations, ...);
Untuk mengakses argumen tambahan macro va_start, va_arg dan va_end, dinyatakan dalam header ini, dapat digunakan:
1. Pertama, va_start menginisialisasi daftar argumen variabel sebagai va_list.
2. eksekusi selanjutnya dari va_arg menghasilkan nilai-nilai dari argumen tambahan dalam urutan yang sama seperti dilewatkan ke fungsi.
3. Akhirnya, va_end harus dijalankan sebelum kembali fungsi.
Jenis: va_list: Jenis untuk menyimpan informasi tentang argumen variabel (tipe)
Fungsi makro:
1. va_start: Mulai argumen iterasi dengan va_list
2. va_arg: Ambil argumen
3. va_end: Gratis va_list
4. va_copy: Copy isi dari satu ke yang lain va_list
Anda mengontrol akses argumen variabel dengan definisi berikut / fungsi / macro tersedia di stdarg. Semua referensi ini harus hanya muncul di dalam tubuh fungsi yang akan memiliki sejumlah variabel argumen (seperti dilambangkan dengan elipsis):
Varname 1. va_list;
Ini adalah nama dari sebuah struktur yang akan mempertahankan informasi tentang daftar argumen variabel, dan oleh karena itu digunakan di masing-masing berikut fungsi / macro. Dan contoh mungkin: args va_list;
2. va_start (varname, last_defined_arg); Fungsi ini menginisialisasi pengolahan daftar argumen variabel. Parameter pertama sesuai dengan nama variabel yang digunakan saat menetapkan struktur va_list. Parameter kedua sesuai dengan nama variabel argumen didefinisikan terakhir dalam daftar argumen dalam definisi fungsi ini. Fungsi ini harus dipanggil sebelum Anda mencoba untuk referensi salah satu argumen variabel. Sebuah contoh akan:
   void foo (int num, ...) {
   args va_list;
   va_start (args, num);
3. va_arg (varname, typename);
Fungsi ini adalah salah satu yang Anda gunakan untuk mengakses nilai dari setiap argumen variabel. Parameter pertama sesuai dengan nama variabel yang digunakan saat menetapkan struktur va_list. Parameter kedua sesuai dengan jenis nilai yang dilewatkan. The va_arg () fungsi akan kembali kepada Anda untuk nilai yang sesuai dari argumen variabel berikutnya pada gilirannya. Ini berarti bahwa pertama kali va_arg () dipanggil, maka akan mengembalikan nilai dari argumen variabel pertama berlalu dalam doa ini fungsi, kedua kalinya itu disebut akan mengembalikan nilai dari argumen variabel kedua berlalu, dan sebagainya. Berikut adalah beberapa contoh:
   int num1 = va_arg (args, int);
   mengapung num2 = va_arg (args, float);
4. va_end (varname);
Fungsi ini Anda menelepon di akhir fungsi Anda, tepat sebelum Anda kembali. Ini tugas adalah untuk menempatkan sistem tumpukan dalam rangka, dan mempersiapkan diri untuk kembali ke rutinitas panggilan. Hanya harus dipanggil sekali dan tidak harus disebut setiap kali Anda ingin menggunakan kembali daftar argumen. Berikut adalah contoh: va_end (args);

Contoh :



File dalam bahasa pemprogramman C

File


Dapat dibuat, diperbarui, dan diproses oleh program C
Digunakan untuk penyimpanan permanen data dalam jumlah besar. Penyimpanan data dalam variabel dan array hanya sementara
Data Hierarchy: Bit (. Item data terkecil Nilai 0 atau 1); Byte (8 bit Digunakan untuk menyimpan karakter, angka desimal, huruf, dan simbol-simbol khusus.); Lapangan (. Sekelompok karakter menyampaikan makna Contoh: nama Anda); Record (kelompok bidang terkait Diwakili oleh structor kelas Contoh:.. Dalam sistem penggajian, catatan untuk karyawan tertentu yang berisi / nya nomor identifikasi, nama, alamat, dll); Berkas (kelompok catatan terkait Contoh:. File gaji); Database (kelompok file terkait).
Struktur file: File descriptor (Indeks ke dalam sistem operasi array yang disebut tabel berkas terbuka) dan Berkas Blok Control (FCB) (Ditemukan di setiap elemen array, sistem menggunakannya untuk mengelola file).
Cara membuat file?
1. FILE * myPtr; Menciptakan FILEpointer disebut myPtr.
2. myPtr = fopen ("myFile.dat", openmode); Fungsi fopen mengembalikan FILEpointer ke file yang ditentukan. Membutuhkan dua argumen-file untuk membuka dan mengajukan modus terbuka. Jika terbuka gagal, NULL kembali.
3. fprintf; Digunakan untuk mencetak ke file. Seperti printf, kecuali argumen pertama adalah FILEpointer sebuah (pointer ke file yang ingin Anda cetak di)
4.feof (FILEpointer); Mengembalikan nilai true jika akhir-of-file indikator (tidak ada lebih banyak data untuk proses) ditetapkan untuk file yang ditentukan
5.fclose (FILEpointer); Menutup file tertentu. Dilakukan secara otomatis ketika program berakhir. Praktik yang baik untuk menutup file secara eksplisit
Digunakan untuk mencetak ke file. Seperti printf, kecuali argumen pertama adalah FILEpointer sebuah (pointer ke file yang ingin Anda cetak di)
4.feof (FILEpointer); Mengembalikan nilai true jika akhir-of-file indikator (tidak ada lebih banyak data untuk proses) ditetapkan untuk file yang ditentukan
5.fclose (FILEpointer); Menutup file tertentu. Dilakukan secara otomatis ketika program berakhir. Praktik yang baik untuk menutup file secara eksplisit
Tabel file mode terbuka:
1. r: Membuka file untuk membaca.
2. w: Buat sebuah file untuk menulis. Jika file sudah ada, membuang isi saat.
3. a: Menambahkan; membuka atau membuat file untuk menulis pada akhir file.
4. r +: Buka file untuk update (membaca dan menulis).
5. w +: Buat file untuk pembaruan. Jika file sudah ada, membuang isi saat.
6. a +: Tambah; membuka atau membuat file untuk update; penulisan dilakukan pada akhir file.

Contoh :



Struct dalam bahasa pemprogramman C

Struct

Struktur  digunakan untuk variabel kelompok bersama di bawah satu nama. Jika Anda memiliki struktur siswa misalnya maka Anda akan kelompok jumlah siswa dan nama siswa bersama-sama.
Hal pertama yang harus dilakukan saat membuat struktur adalah dengan menggunakan kata kunci struct diikuti dengan nama struktur. Anda harus menempatkan kurung keriting setelah itu yang akan berisi hal-hal yang membuat struktur. Selalu ingat untuk menempatkan semi-kolom setelah kurung keriting





Struct dan Functions

Dalam bahasa pemprogramman C, Struct dapat dikirimkan ke fungsi dengan dua metode: Lewat nilai (lewat nilai aktual sebagai argumen) & Lewat referensi (alamat lewat argumen)
Melewati struktur dengan nilai: Sebuah variabel struktur dapat dikirimkan ke fungsi sebagai argumen sebagai variabel normal. Jika struktur ini dilalui oleh nilai, perubahan yang dibuat di variabel struktur dalam definisi fungsi tidak mencerminkan variabel struktur asli di memanggil fungsi
Melewati struktur dengan referensi: Lokasi alamat variabel struktur dilewatkan berfungsi sementara lewat dengan referensi. Jika struktur dikirimkan dengan referensi, perubahan yang dibuat di variabel struktur dalam definisi fungsi mencerminkan variabel struktur asli dalam fungsi panggilan.

Pointer dan reference dalam bahasa C/C++

Pointer


pointer adalah sebuah objek data yang berisi alamat yang menunjukkan lokasi memori dimana suatu nilai tersimpan . variabel-variabel pointer dideklarasikan sama seperti pendeklarasian biasa , hanya saja ditambahkan tanda (*) dibelakang jenis datanya , jadi bentuk umum dari pointer adalah :

int *pointer;
int *float;

kami berikan contoh codingan seperti berikut , dibawah ini :








Pointer dan Array 

     Array dan Pointer dalam pemprogramman bahasa C itu hampir sama namun berbeda . perbedaan yang penting dari mereka adalah variabel pointer dapat mengambil alamat yang berbeda . sedangkan , dalam kasus array itu tetap . 
contohnya seperti ini :




Pointer dan Functions 

   Pemprogramman bahasa C memungkinkan melewati pointer ke functions , untuk melakukannya cukup mendeklarasikan parameter fungsi sebagai jenis pointer .Ketika, argumen yang berlalu menggunakan pointer, alamat dari lokasi memori dilewatkan bukan nilai.
Fungsi pointer memiliki kegunaan kuat lainnya selain hanya disahkan sebagai fungsi panggilan-kembali. Mereka juga dapat digunakan sebagai bagian dari tabel lookup. Ini adalah di mana Anda memiliki sejumlah besar fungsi yang Anda mengaksesnya melalui sebuah array dari pointer fungsi .

sebagai contoh :


Reference


Referensi adalah alias, sinonim untuk variabel lain. Hal ini dinyatakan dengan menggunakan operator referensi & ditambahkan dengan jenis referensi.
Contoh: Dapat dilihat pada contoh di atas. Alamat lokasi memori num1 num2 dan dilewatkan ke fungsi dan pointer * dan * b menerima nilai-nilai. Jadi, pointer a dan b poin untuk mengatasi dari num1 dan num2 masing-masing. Ketika, nilai pointer berubah, nilai dalam lokasi memori juga berubah Sejalan. Oleh karena itu, perubahan dibuat untuk * dan * b tercermin dalam num1 num2 dan fungsi utama. Teknik ini dikenal sebagai panggilan dengan referensi dalam pemrograman C.