Simple
DirectMedia Layer (SDL), 1998 yılında Sam Lantinga tarafından
geliştirilmeye başlanmış açık kaynak bir grafik kütüphanesidir.
Linux ve windows gibi birçok platform için kod geliştirebilme
yeteneğine sahiptir. Üstelik bir değişiklikte yapmanız
gerekmiyor. Bu kütüphane ilk olarak C dili için geliştirilmiş
olup daha sonraları C++,
Perl, Python
ve Pascal için
uyarlamaları yapılmıştır.
Bizdeş şu anda Free Pascal da kullanımını dilimiz döndüğünce
giriş niteliğinde anlatmaya çalışacağız.
Ben
ubuntu-linux kullandığım için ubuntu üzerinde anlatımını
yapacağım. Ancak windows üzerinde kullanımı hemen
hemen aynıdır. Sonuçta indirdiğiniz başlık dosyalarını aynı
şekilde fp ide yada lazarus ide ye referans gösteriyorsunuz. Ve
kullanıyorsunuz.
1- Lazarus
kurulumu:
https://www.lazarus-ide.org/
adresinden 3 adet deb uzantılı dosya indirilir. Sırayla “fpc_*”,
“fpc-src-*” ve “lazarus-*” ile başlayan deb dosyaları
terminal penceresinde kurulur.
sudo
dpkg -i fpc_3.0.2-170225_amd64.deb
sudo
dpkg -i fpc-src_3.0.2-170225_amd64.deb
sudo
dpkg -i lazarus-project_1.6.4-0_amd64.deb
Bu
yukardaki kurulumlarda eğer karşılanamayan bağımlılık hatası
verirse hemen aşağıdaki kodu terminalden uygularız.
sudo
apt-get -f install
Son
komut ile kurum tamamlanmış olur.
2- SDL Yüklemesi:
2.1- SDL Başlık dosyalarının Yüklenmesi:
https://github.com/ev1313/Pascal-SDL-2-Headers
adresinden free pascal içerisinde sdl2.dll fonksiyonlarının
tanımlarının olduğu başlık dosyaları zip olarak indirilir. Bu
zip dosyası örneğin /home/durali/Belgeler dizini içine açılır.
Lazarus içinden kullanılmak için “proje->proje
seçenekleri->Compiler Options->Paths->Other
Unit Files” kısmında
bu başlık dosylarının yolu eklenir. Artık sdl başvurularını
kod içinde hatasız bir şekilde yapabiliriz.
2.2- SDL Kitaplığının işletim sistemine (Ubuntuya)
yüklenmesi:
SDL kitaplığı dediğimiz windows
sistemlerinde dll uzantılı dosyaların linuxteki karşılığı
olan so uzantılı “dinamik bağlantı kitaplık” dosyalarıdır.
Zaten başlık dosyalarımızda bu kitaplık dosyaları ile bir nevi
köprü oluşturur. Yüklemesi için terminal penceresi açılarak
aşağıdaki satırdaki kodlar uygulanır.
sudo
apt-get install libsdl2*
SDL ile ilgili ne kadar geliştirme
dosyaları varsa bu komut ile yüklenecektir.
3- SDL ile ilgili
kodların lazarusta test edilmesi.
Bunun
için aşağıdaki kodu boş bir proje yada pas dosyası içine
yapıştırıp derlemeyi yapınız. Eğer düzgün derlendiği
mesajını görüyorsanız kod doğru çalışıyor demektir.
program
project1;
uses
SDL2;
begin
//initilization of video subsystem
if SDL_Init( SDL_INIT_VIDEO ) < 0 then HALT;
//your SDL2 application/game
//shutting down video subsystem
SDL_Quit;
end.
Bu
aşamalardan sonra hatasız bir şekilde SDL kitaplığı ile grafik
yapmaya başlayabilirsiniz. Grafik programlama ne işimize yarar
sorusuna en iyi cevap oyun programcılığı olacaktır. OpenGL in
gücünü donanım aygıtlarınıza (grafik, ses, joystick vs.)
doğrudan erişim sağlayarak hissetmenizi sağlayacaktır. Hatta
diyebilirimki ufaktan oyun programcılığına merakınız varsa bunu
SDL kitaplığı iyi bir şekilde sağlayacaktır. Şu da
unutulmamalıdır ki bu bahsedilenler küçün oyun programcıkları
için geçerlidir. Daha büyük oyunları da SDL ile yapabilirsiniz
elbette. Ancak bu işler için oyun motoru dediğimiz devasa ide
yapıları mevcuttur. Kısaca benim söyleyebileceklerim bunlardır.
Zaten amacımda free pascal da bunun nasıl yapılabildiğiniz
başlangıç düzeyinde anlatmaktı.
Size
daha anlam ifade etmesi için aşağıdaki mini projeyide sunuyorum.
Bir
dizin oluşturun. Misal oyun1 diye. İçine bir adet adı “fpsdl.bmp”
olan bir bitmap dosyasını bir resim programıyla(pinta gibi)
oluşturun. Lazarusta yeni bir konsol projesi yada boş bir dosya
içine şu kodları yapıştırın.
program
project1;
uses
SDL2, SDL2_image;
var
sdlWindow1
: PSDL_Window;
sdlRenderer
: PSDL_Renderer;
sdlTexture1
: PSDL_Texture;
begin
//initilization
of video subsystem
if
SDL_Init( SDL_INIT_VIDEO ) < 0 then HALT;
sdlWindow1
:= SDL_CreateWindow( 'Window1', 50, 50, 500, 500, SDL_WINDOW_SHOWN );
if
sdlWindow1 = nil then HALT;
sdlRenderer
:= SDL_CreateRenderer( sdlWindow1, -1, 0 );
if
sdlRenderer = nil then HALT;
sdlTexture1
:= IMG_LoadTexture( sdlRenderer, 'fpsdl.bmp' );
if
sdlTexture1 = nil then HALT;
SDL_RenderCopy(
sdlRenderer, sdlTexture1, nil, nil );
SDL_RenderPresent
(sdlRenderer);
SDL_Delay(
2000 );
SDL_DestroyTexture(
sdlTexture1 );
SDL_DestroyRenderer(
sdlRenderer );
SDL_DestroyWindow
( sdlWindow1 );
//shutting
down video subsystem
SDL_Quit;
end.
Bu
kod ile oluşturulan bir pencere içersinde resim dosyamızın
doğrudan grafik donanımına erişerek gösterilmesi hedeflenmiştir.
Oluşturulan bu pencere 2 sn kadar gösterildikten sonra
kapatılmaktadır. Bmp
uzantılı dosyanız ile kod dosyasının aynı dizin içinde
olmasına dikkat edin. Eğer herşeyi doğru yaptıysanız resim
dosyanızı 2 sn görebiliyor olmalısınız.
Son
olarak bu konuda en baba çalışmayı yapmış youtube rumuzu
“badsectoracula”
olan kişi tarafından çekilmiş 5 saatlik hızlandırılmış bir
video var. Bu video free pascal da bir oyun nasıl yazılır sdl
kullanarak anlatmış.
Benden
bu kadar. Aşağıdaki
kaynaklara göz atmayı unutmayınız. Allah
a emanet olunuz..
duralikiraz.blogspot.com
“Muvaffakiyet
Allahtandır.”
Kaynaklar:
Hiç yorum yok:
Yorum Gönder