Halo semuanya! Saya memutuskan untuk melihat SDL 2, tetapi saya tidak menemukan sesuatu yang masuk akal dalam bahasa Rusia. Saya memutuskan untuk menulis inspirasi makan sendiri
dari sini .
Saya akan melewatkan instalasi SDL 2, dan saya akan segera mulai dengan menulis program, jadi:
Jendela pertama Anda
Mari kita mulai dengan menghubungkan SDL 2.
#include <SDL2/SDL.h>
Di sini kita akan mendeklarasikan beberapa variabel global.
const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480;
Selanjutnya, buka fungsi utama yang sudah dikenal semua orang.
int main (int argc, char ** args) { if( SDL_Init( SDL_INIT_EVERYTHING ) != 0 ) { return 1; } SDL_Surface* screen_surface = NULL; SDL_Window* window = NULL;
Mari kita lihat kodenya sedikit. Secara utama, parameter baris perintah diterima dari baris perintah, mereka harus diterima. Selanjutnya, kita inisialisasi SDL 2 dengan fungsi
SDL_Init () . Kami meneruskan
SDL_INIT_EVERYTHING ke sana, yang berarti kami menginisialisasi semua modul SDL (video, audio, dll.). Ada beberapa flag lagi untuk SDL_Init:
BenderaSDL_INIT_TIMER - koneksi timer;
SDL_INIT_AUDIO - koneksi audio;
SDL_INIT_VIDEO - koneksi video, acara terhubung secara otomatis;
SDL_INIT_JOYSTICK - koneksi kontrol joystick;
SDL_INIT_HAPTIC - subsistem taktil (saya tidak tahu apa itu, jujur saja);
SDL_INIT_GAMECONTROLER - menghubungkan kontrol, joystick terhubung secara otomatis;
SDL_INIT_EVENTS - memungkinkan pemrosesan acara;
SDL_INIT_EVERYTHING - menghubungkan semua yang tercantum di atas;
SDL_INIT_NOPARACHUTE - pemeriksaan kompatibilitas.
Selanjutnya, buat jendela dengan fungsi
SDL_CreateWindow () . Jika ada yang tidak beres seperti yang dimaksudkan, kembalikan 1.
window = SDL_CreateWindow("Hello, SDL 2!",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SDL_SCREEN_WIDTH, SDL_SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (window == NULL) { return 1; }
Fungsi
SDL_CreateWindow () mengambil nilai-nilai nama jendela, posisi jendela dengan OX, posisi jendela dengan OY, lebar jendela, tinggi jendela dan bendera. Sekarang kita akan berkeliling bendera
SDL_WINDOW_SHOWN .
Ada bendera lain untuk membuat jendela.
BenderaSDL_WINDOW_FULLSCREEN - membuka jendela dalam mode layar penuh, mengubah resolusi desktop;
SDL_WINDOW_FULLSCREEN_DESKTOP - membuka jendela dalam mode layar penuh dengan izin desktop ini;
SDL_WINDOW_OPENGL - jendela dengan dukungan untuk OpenGL;
SDL_WINDOW_HIDDEN - jendela tersembunyi;
SDL_WINDOW_BORDERLESS - jendela tanpa bingkai;
SDL_WINDOW_RESIZABLE - Anda dapat mengubah ukuran jendela;
SDL_WINDOW_MINIMIZED - jendela diminimalkan;
SDL_WINDOW_MAXIMIZED - jendela dimaksimalkan;
Jika kita mengkompilasi dan menjalankan program sekarang, kita akan melihat jendela 640x480 diisi dengan putih, yang menutup setelah beberapa saat. Luar biasa! Untuk menikmati sedikit keajaiban ini, kita dapat menulis
SDL_Delay (2000) . Ini akan membuat program membeku selama 2 detik.
Hanya sebuah jendela, tentu saja, bagus, tetapi akan lebih keren untuk menggambar di dalamnya, bukan? Untuk melakukan ini, buat permukaan di mana kita akan menggambar semuanya, karena langsung di jendela, menggambar entah bagaimana jelek atau semacamnya.
screen_surface = SDL_GetWindowSurface(window); SDL_FillRect(screen_surface, NULL, SDL_MapRGB(screen_surface->format, 0, 255, 0)); SDL_UpdateWindowSurface(window);
Pertama kita mendapatkan permukaan jendela dengan fungsi
SDL_GetWindowSurface () . Itu dibuat sehingga tidak perlu menunjukkan dimensi permukaan, formatnya, tetapi segera mendapatkan permukaan selesai. Selain itu, permukaan ini tidak perlu digambar di jendela - itu akan melakukan semuanya sendiri.
Lalu kami menggunakan
SDL_FillRect () untuk mengecat permukaan hijau kami. Kami menulis
SDL_MapRGB , memberi tahu program bahwa kami akan menggunakan RGB (Merah Hijau Biru) untuk mengatur warna.
Dan pada akhirnya, kita harus memperbarui jendela dengan fungsi
SDL_UpdateWindowSurface () sehingga menampilkan apa yang kita katakan kepadanya.
Pada tahap ini, ketika Anda memulai program akan menampilkan jendela yang diisi dengan warna hijau cerah, yang tidak akan ditutup dalam 2 detik.
Setelah menyelesaikan program, kita perlu menghapus RAM dari file yang tidak perlu, tutup jendela, secara umum, menentukan penghentian program yang benar. Dalam hal ini, fungsi yang disiapkan secara khusus akan membantu kami.
SDL_DestroyWindow(window); SDL_Quit();
Fungsi
SDL_DestroyWindow () menutup jendela, dan fungsi
SDL_Quit () menonaktifkan semua modul yang sebelumnya terhubung dengan fungsi
SDL_Init () .
Baiklah, pelajaran nomor 1 telah berakhir, saya harap semuanya jelas. Ini kode yang saya dapat di akhir:
#include <SDL2/SDL.h> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; int main (int argc, char ** args) { if( SDL_Init( SDL_INIT_EVERYTHING ) != 0 ) { return 1; } SDL_Surface* screen_surface = NULL; SDL_Window* window = NULL; window = SDL_CreateWindow("Hello, SDL 2!",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (window == NULL) { return 1; } screen_surface = SDL_GetWindowSurface(window); SDL_FillRect(screen_surface, NULL, SDL_MapRGB( screen_surface->format, 0, 255, 0)); SDL_UpdateWindowSurface(window); SDL_Delay(2000); SDL_DestroyWindow(window); SDL_Quit(); return 0; };
Semoga beruntung untuk semuanya!
Pelajaran selanjutnya
>>