SDL

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk
Simple DirectMedia Layer
Skaper Sam Lantinga
Utvikler Sam Lantinga
Nyeste versjon 1.2.12 (20. juli 2007)
Operativsystem Multiplattform
Type API
Lisens GNU Lesser General Public License
Nettside http://www.libsdl.org/
Simple DirectMedia Layer

Simple DirectMedia Layer (SDL) er et flerplattforms programvarebibliotek for multimedia skrevet i C. SDL er en abstraksjon mellom flere API-er innenfor grafikk-, lyd- og inndata som gjør det mulig å skrive et program som virker på ulike operativsystemer. For eksempel Linux, Windows, Mac OS X, AmigaOS og Amiga-klonen MorphOS. Biblioteket tar seg av grafikk, hendelser (events), digitallyd, CD-ROM, lyd, tråder, bibliotek lasting og tidtakere. SDL er fri programvare.

Historie[rediger | rediger kilde]

Skaperen av SDL, Sam Lantinga ga ut første versjon tidlig i 1998. På denne tiden jobbet han for "Loki Software", et firma som satset på å konvertere Windows-spill til Linux og Mac. Han fikk ideen mens han konverterte et program fra Windows til Macintosh. Etter dette konverterte han "Doom" til BeOS. Flere andre gratisbibliotek ble senere støttet i SDL. Blant annet SMPEG og OpenAL.

SDL-biblioteket kan brukes med nesten etthvert programeringsspråk. Fra populære (C++, Perl, Python (via pygame), Pascal og flere.) til mindre kjente (som Euphoria eller Pliant). SDL er i dag et vanlig valg for mange multimediaapplikasjoner, takket være den åpne kildekoden (lisensiert under LGPL) og den nevnte språkstøtten.

SDL er i seg selv veldig enkel; det fremstår som en tynn, flerplattforms "wrapper", som tilbyr 2D pikseloperasjoner, lyd, filbehandling, hendelseshåndtering (event handling), tråder og mer. SDL kombineres ofte med OpenGL ved å sette opp et vindu som OpenGL kan tegne i, og flere funksjoner som OpenGL ikke håndterer alene.

Biblioteket er delt inn i flere undergrupper. Det vil si Video (tar seg av overflatefunksjoner og OpenGL), Audio, CD-ROM , Joystick og Timer-undergrupper. Ved siden av denne lavnivåstøtten er det også en del offisielle biblioteker som tar seg av flere funksjoner. Dette kalles "standardbiblioteket". De er tilgjengelige på den offisielle nettsiden og er inkludert i dokumentasjonen:

  • SDL_image - støtter flere bildeformater. F.eks. JPEG og PNG.
  • SDL_mixer – flere og enklere funksjoner for lyd. Hovedsakelig for avspilling av flere lyder samtidig. Støtter avspilling av moduler slik som MOD, XM(Fast Tracker), IT(Impulse Tracker) osv.
  • SDL_net – nettverksstøtte
  • SDL_ttfTrueType Font tegning
  • SDL_rtf – enkel Rich Text Format tegning

Arkitektur[rediger | rediger kilde]

Abstaksjonslagene i flere SDL-plattformer

SDL har ordet "layer" i navnet fordi det egentlig er en "wrapper" for spesifikk operativsystemfunksjonalitet. Hovedhensikten med SDL er å tilby et felles rammeverk til å utnytte denne funksjonaliteten.

På grunn av oppbygningen av SDL er mye kildekode delt opp i separate moduler for hvert operativsystem for å gjøre kall til underliggende systemer. Når SDL kompileres velges de riktige modulene for det ønskede systemet.

Microsoft Windows, er SDL en "oversetter" (wrapper) for DirectX, som igjen kommuniserer med grafikkdriveren. Eldre versjoner av SDL brukte DirectX 5, men SDL 1.2 (nåværende stabile utgave) krever DirectX 7 som standard. Sam Lantinga har uttrykt planer om å bruke DirectX 8 in fremtiden [1].

X11-plattformer, inkludert Linux, bruker SDL Xlib til å kommunisere med X11 for grafikk og hendelser (events).

Mac OS X, bruker SDL Quartz.

Syntax og undernivåer[rediger | rediger kilde]

Syntaksen i SDL er funksjonsbasert. Alle operasjoner gjøres ved å sende parametere. Spesielle strukturer (oppramsningstypen struct?) brukes også til å lagre spesifikk informasjon som SDL må behandle. Det er en del forskjellige undernivåer som SDL katagoriserer funksjonene sine under:

  • Video, events and threads
  • Audio
  • Time
  • Joystick
  • CD-ROM

Skjermgalleri[rediger | rediger kilde]


Utvidelser[rediger | rediger kilde]

Se også[rediger | rediger kilde]

Referanser[rediger | rediger kilde]

Eksterne lenker[rediger | rediger kilde]