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, slik som Linux, Windows, Mac OS X, AmigaOS og Amiga-klonen MorphOS. Biblioteket tar seg av grafikk, hendelser (events), digitallyd, CD-ROM, lyd, tråder, biblioteklasting og tidtakere. SDL er fri programvare.

Simple DirectMedia Layer
Skaper(e)Sam Lantinga
Utvikler(e)Sam Lantinga
Utgitt 1998
Nyeste versjon2.30.2 (1. april 2024)[1]
Kodelagerhttps://github.com/libsdl-org/SDL
OperativsystemMicrosoft Windows GNU/Linux Android macOS iOS FreeBSD Haiku
Skrevet iC[2]
TypeProgrammeringsgrensesnitt
LisensZlib-lisens,[3] LGPL 2.1
Nettstedwww.libsdl.org (en)

Simple DirectMedia Layer

Historie rediger

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 ethvert programmeringssprå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 fremstår som en tynn, flerplattforms «innpakning»(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, Video (som tar seg av overflatefunksjoner og OpenGL), Audio, CD-ROM , Joystick og Timer. Ved siden av denne lavnivåstøtten finnes 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, for eksempel JPEG og PNG.
  • SDL_mixer – flere og enklere funksjoner for ly,.hovedsakelig for avspilling av flere lyder samtidig. Støtter avspilling av moduler slik som MOD, XM(Fast Tracker) og IT(Impulse Tracker).
  • SDL_net – nettverksstøtte
  • SDL_ttfTrueType Font-tegning
  • SDL_rtf – enkel Rich Text Format-tegning

Arkitektur rediger

 
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 å utføre kall til underliggende systemer. Når SDL kompileres velges de riktige modulene for det ønskede systemet.

Microsoft Windows, er SDL en «wrapper» for DirectX, som igjen kommuniserer med grafikkdriveren. Eldre versjoner av SDL brukte DirectX 5, men SDL 1.2 krever DirectX 7 som standard. Sam Lantinga uttrykte i 2000 planer om å bruke DirectX 8 i fremtiden,[4] og per 2021 støtter SDL versjon 2.0.x standardmessig DirectX 9, men kan håndtere opptil DirectX 11. Programvaren støtter i tillegg de grafiske systemene OpenGL, Xlib for X11-vindussystemet, samt nyere grensesnitt som Vulkan og EGL i samspill med Wayland.

Mac OS X, bruker SDL Quartz og Metal.

Syntax og undernivåer rediger

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

Utvidelser rediger

Se også rediger

Referanser rediger

Eksterne lenker rediger