SDL

Bevezetés

Általában

A Simple DirectMedia Layer (SDL) egy „platformfüggetlen/multiplatform” ingyenes, nyílt forráskódú multimédiás szoftverkönyvtár, amely C környezetben íródott, és különböző rendszerek grafikai, hang és bemeneti ún. API-jai felett vett hidat létesít, lehetőséget nyújtva a fejlesztők számára, hogy megírjanak egy számítógépes játékot, vagy egyéb multimédiás alkalmazást egyszer, majd azt valamennyi rendszeren futtassák, beleszámítva a Linuxot, Windows-t, Mac OS X-et, AmigaOS-t illetve ennek egy utánzatát, MorphOS-t.

Felmerülhet a kérdés, hogy milyen nyelvhez is készült ez a könyvtár. Nagyon jó érzés azt elmondani, hogy szinte minden „divatos” programozási nyelvhez létezik SDL. A hivatalos honlapról a következõ nyelvekhez tölthetjük le: Ada, C++, C#, Eiffel, Erlang, Euphoria, Guile, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby. Ez a könyvtár videót, esemény kezeléseket, digitális audiót, CD-ROM-ot, hangot, folyamatokat, megosztott objektumok betöltését, hálózatot és időzítést kezeli.

Története

Sam Lantinga létrehozott egy könyvtárat, melyet először 1998-ban adott ki, amikor a Loki Software cégnél dolgozott. Ő neki jött az ötlet, amikor éppen egy Windows-os alkalmazást programozott át Macintosh-ra. Ezek után, az SDL segítségével átemelte a Doom-ot BeOS-re. Rengeteg egyéb ingyenes könyvtár tűnt az SDL-lel működőnek, mint például SMPEG és OpenAL.

Az SDL könyvtárnak szinte minden programozási környezetre létezik átirata, kezdve a legelterjedtebbekkel, (Pl.: C++, Perl, Python, (Keresztül a pygame-en), Pascal, stb.) egészen a kevésbé ismertekig (Pl.: Euphoria, vagy Pliant). Ez, valamint a tény, hogy nyílt forráskódú és LGPL licenc alatt van terjesztve, teszi az SDL könyvtárat egy általános választássá sok multimédiás alkalmazásnak.

Az SDL önmagában, igen egyszerű; éppen egy vékony „keresztrendszeres” keretként viselkedik, 2D képpontos műveleteket, hangot, fájl hozzáférést, eseménykezelést, időzítést, folyamat kezelést és még egyéb mást szolgáltatva. Gyakran használják az OpenGL kiegészítéseként azáltal, hogy beállítják a grafikai kimenetet, illetve egér és billentyűzetet bemenetet kezelnek, ami az OpenGL határait terjeszti ki.

A könyvtár rengeteg alrendszerre van tagolva, nevezetesen a videó (mind a felületi funkciókat mind az OpenGL-t kezeli), audió, CD-ROM, botkormány és időzítő alrendszerre. Mind emellett az alap, alacsony szintű támogatás mellett, ott van még pár különálló hivatalos könyvtár, amely egyéb funkciókat lát el. Ez magában foglalja az „alap könyvtárat”, mindazonáltal a hivatalos honlapon is megtalálható, és a hivatalos dokumentációban is benne áll:

Felépítés

Az SDL nevében benne van a layer, réteg szó, mivel ez egy keret, egy „réteg” az egyes rendszerek különleges tulajdonságai köré. A fő feladata az SDL-nek, hogy egy közös keretrendszert biztosítson ezeknek a tulajdonságok eléréséhez.

Az SDL tervezéséből adódóan, rengeteg forráskód apró külön álló modulokra darabolódott minden operációs rendszerhez, hogy hívásokat intézhessen az alatta működő rendszerhez. Mikor az SDL-t befordítják, a megfelelő modulok lesznek kiválasztva a rendszerhez.
Az SDL könyvtár tartalmaz egy általános, az SDL rendszert kezelõ szolgáltatás csoportot. Ezekkel lehet inicializálni és lezárni a rendszert, hibakezelést végezni, valamit információkat lekérdezni az SDL alrendszereirõl.

A Microsoft Windows rendszer alatt, valójában a DirectX rendszer köré épül, ami a videokártya-meghajtót öleli fel. Régebbi verziójú SDL az 5-ös verzióját használja, de az SDL 1.2 (jelenlegi legújabb stabil változat) DirectX 7-et igényli alapból. Sam Lantinga állítása szerint, a következő változat, a DirectX 8-ra fog épülni.
Az X11 rendszeren, beleértve a Linuxot, az SDL az Xlib segítségével kommunikál az X11 rendszer grafikai eseményeivel. Mac OS X alatt, a Quartz-ot használja.

Felépítés

Szintaktika és alrendszerei

Az SDL szintaktikája függvény alapú; minden művelet az SDL segítségével, fügvényeknek adott paraméterek segítségével történik. Kiemelt struktúrákat is használ, hogy az SDL-nek kezeléséhez szükséges információkat tároljon. Van néhány különböző alrendszer, amely függvényeit, az SDL kategóriákba sorol: