Eenvoudige DirectMedia-laag

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
Eenvoudige DirectMedia-laag

SDL-logo
Basis data

ontwikkelaar Sam Lantinga en de SDL-gemeenschap
Jaar van uitgave 1998
Huidige versie 2.0.16[1]
( 10 augustus 2021 )
besturingssysteem Linux , macOS , Windows , Android , iOS
programmeertaal C.
categorie Programmabibliotheek
Licentie zlib-licentie ( gratis software ) vóór SDL 2.0.0: LGPL
Duits sprekend Ja
www.libsdl.org

Simple DirectMedia Layer (SDL voor kort, Engels voor "eenvoudige DirectMedia laag") is een gratis multimedia bibliotheek voor diverse besturingssystemen . Vanaf versie 2.0 is het beschikbaar onder de zlib-licentie . Alle oudere versies vóór 2.0 vallen onder de GNU Lesser General Public License (LGPL).

concept

De bibliotheek biedt een platformonafhankelijke interface (API) voor grafische, geluids- en invoerapparaten, die vooral geschikt is voor het ontwikkelen van games en multimediatoepassingen. Door veel verschillende platformen te ondersteunen kan een hoge portabiliteit of platformonafhankelijkheid voor een applicatie worden gegarandeerd. Met deze eigenschap kan SDL ook worden opgevat als middleware . [2]

Abstractieniveaus met SDL op verschillende platforms: helemaal bovenaan (blauw gekleurd) zijn de platformonafhankelijke delen, helemaal onderaan (bruin gekleurd) de uitvoerende hardware , tussen verschillende platforms met hun (overliggende) interfaces en bibliotheken

Er zijn officiële en niet-officiële SDL-verbindingen voor tientallen programmeertalen, die integratie in vele projecten en ontwikkelingscontexten mogelijk maken. [3] [4]

Door gebruik te maken van de liberale zlib-licentie kunnen de SDL-bibliotheken zonder problemen worden gebruikt op het gebied van licentierecht in binaire en broncodevorm, zowel in open source (GPL-compatibel [5] ) als in propriëtaire projecten (geen copyleft ).

SDL is geschreven in C en wordt gekenmerkt door zijn compacte code, waardoor deze bibliotheek zelfs voor beginners gemakkelijk te leren is. Vanwege het wijdverbreide gebruik en de nabijheid van de open source-beweging, zijn er veel gratis voorbeeldprogramma's voor verschillende gebruiksscenario's die laten zien hoe de bibliotheek kan worden gebruikt.

verdeling

Het aantal spellen en programma's dat ermee is geschreven, is een indicatie van de populariteit en bekendheid van SDL, b.v. Zo vermeldt de spellendatabase MobyGames in 2012 105 spellen [2] op de SDL-website zelf staan ​​bijna 700 spellen vermeld. [6] Bekende commerciële voorbeelden zijn Angry Birds [7] of Unreal Tournament , uit de open source z-reeks. B. OpenTTD , [8] De strijd om Wesnoth [9] of Freeciv . [10]

In het geval van platformonafhankelijke gamepublicaties wordt SDL vaak gebruikt als abstractiebibliotheek, omdat de inspanning aanzienlijk wordt verminderd in vergelijking met implementaties met de respectieve native platform-API's. Een voorbeeld zijn de voornamelijk op SDL gebaseerde Linux-, Mac- en Android- versies in de Humble Indie Bundles .

SDL wordt ook vaak gebruikt voor (later) porten naar nieuwe platformen, b.v. B. Homeworld voor de Pandora- handheld [11] of Jagged Alliance 2 voor Android- smartphones . [12]

Niet-game-applicaties op basis van SDL zijn b.v. B. de emulators DOSBox en VisualBoyAdvance .

SDL werd ook gebruikt op universiteiten en bij het lesgeven in multimedia- en informaticacursussen .

Workshop gameprogrammeren met behulp van de libSDL , Universiteit van Cádiz ( Spanje )

Er zijn ook verschillende boeken gepubliceerd over het ontwikkelen met de SDL-bibliotheken (zie de literatuursectie hieronder).

Ontwikkelingsgeschiedenis

Ontstaan ​​bij Loki Software

SDL is ontwikkeld door Sam Lantinga toen hij senior programmeur was (1999-2001) bij Loki Software . De Simple DirectMedia-laag vormt (vaak in combinatie met de OpenGL- en OpenAL- interfaces) de basis voor enkele commerciële gametitels voor Linux die door Loki zijn geporteerd, zoals: B. Beschaving: Call to Power , Descent³ of Sid Meier's Alpha Centauri .

Zelfs toen werd SDL onder de LGPL geplaatst . Met deze stap werd SDL al snel bekend omdat het nu kon worden gebruikt om zowel propriëtaire als gratis software te ontwikkelen.

Verdere ontwikkeling via de community

Hoewel Sam Lantinga in 2001 bij Blizzard Entertainment kwam vanuit Loki Software, beheert hij nog steeds de ontwikkeling van SDL en blijft hij een van de meest actieve SDL-ontwikkelaars. Ryan C. Gordon , een andere ex-Loki-medewerker, blijft ook werken aan en met SDL z. B. voor de Linux- en Mac-versies van games in de Humble Indie Bundle . [13]

Ryan "Icculus" Gordon , bekende gebruiker en ontwikkelaar van SDL, b.v. B. als onderdeel van de Humble Indie Bundle . [14]

Er is nu een grote gemeenschap en andere vrijwilligers die meewerken aan de verdere ontwikkeling.

Er zijn SDL 1.2-verbindingen van andere fabrikanten voor meer dan twintig programmeertalen. [3]

SDL 2.0

De verdere ontwikkeling van versie 1.2 was gepland als versie 1.3 en werd in augustus 2013 gepubliceerd als versie 2.0. [15] Extra mogelijkheden ten opzichte van de vorige versie zijn ondersteuning voor bediening op meerdere monitoren, tweedimensionale graphics versneld door hardware en betere ondersteuning voor Unicode . [16] Verder is ondersteuning voor multi-touch en haptische invoerapparaten, b.v. B. inhouden met forcefeedback . [17] In tegenstelling tot eerdere versies gebruikt SDL 2.0 de zlib-licentie . [18] Hierdoor zou het mogelijk moeten zijn om propriëtaire producten ( closed source ) te ontwikkelen wat de SDL vervolgens statisch bindt (" left must").

Snapshots van februari 2012 wijzigen het versienummer van 1.3 naar 2.0. De eerste stabiele versie van SDL 2.0 werd uitgebracht op 13 augustus 2013. [19]

De huidige stabiele versie SDL 2.0.12 is uitgebracht op 11 maart 2020. [20]

Verbindingen met SDL-2.0 bestaan ​​medio 2014 voor C, C++ en drie andere programmeertalen. [4]

Functionaliteit

De SDL-bibliotheek bevat voornamelijk functionaliteiten die nodig zijn voor multimediatoepassingen waarvoor geen wijdverbreide, platformonafhankelijke en gelijktijdig krachtige API bestaat:

Video uitgang
Videomodus instellen, toegang tot de framebuffer , gebruik van hardwareversnelling voor grafische bewerkingen, optioneel via EGL
Evenementafhandeling
Gebeurtenissen voor toetsenbord , muis , programma-einde en zichtbaarheid van het programma
Audio uitgang
In 8 en 16 bit, mono/stereo
Audio-cd's
Volledige audio-cd- API (niet meer in SDL 2.0)
Draden
Thread- API, semafoor , mutex- objecten en conditievariabelen voor synchronisatie
Timer
Periodiek opvragen, wachttijd, verstreken tijd
Conversie van de bytevolgorde
Big Endian / Little Endian

De Simple DirectMedia Layer zelf biedt geen functies voor 3D-graphics, omdat met OpenGL al een wijdverbreide, platformonafhankelijke 3D API beschikbaar is. SDL is vanaf het begin ontworpen voor interactie met OpenGL en is bedoeld om specifiek de multimedia-aspecten te dekken die buiten de OpenGL-functionaliteit vallen. Daarom vullen beide bibliotheken elkaar perfect aan en ook 3D-games zoals B. Tux Racer zijn zonder problemen mogelijk.

Andere mogelijke toepassingen, zoals abstractie van internetsockets of toegang tot lettertypen, zijn met opzet niet officieel opgenomen in SDL, maar worden door andere providers als extensies aangeboden op de LibSDL-homepage. [21]

Ondersteunde platforms

Voorbeeld voor de integratie van SDL in een platform, hier een Linux systeem. SDL biedt b.v. B. een computerspel toegang tot geluid en invoerhardware via zijn eigen geluids- en invoer-API's.

Officieel ondersteunde platforms: [22]

Ondersteuning inbegrepen in SDL-code maar niet officieel ondersteund:

SDL werkt op alle Unixoid- platforms zolang ze de POSIX- standaard ondersteunen.

Andere ondersteunde platforms:

Voorbeeldige galerij met op SDL gebaseerde games

Zie ook

literatuur

  • Alberto García Serrano: Programma voor videojuegos en SDL . Ediversitas, ISBN 84-95836-08-4 (boek over het gebruik van de SDL bij de ontwikkeling van videogames, Spaans).
  • Ernest Pazera: Focus op SDL . Muska & Lipman / Premier-Trade, ISBN 1-59200-030-4 (een ander boek over SDL, dat ook andere bibliotheken voor de Simple DirectMedia Layer behandelt, zoals SDL_net).
  • Ron Penton: Data Structures for Game Programmers , Muska & Lipman / Premier-Trade, ISBN 1-931841-94-2 (behandelt voornamelijk de datastructuren van een game, maar bevat ook voorbeelden met de SDL).
  • John R. Hall: Linux-spellen programmeren . No Starch, ISBN 1-886411-49-2 (Eerste boek over de SDL. Bevat ook informatie over programmeren in Linux in het algemeen en netwerkprogrammering), online versie: overcode.net ( Memento van 22 januari 2003 in Internet Archive ; PDF) LaTeX-bronnen ( Memento van 14 februari 2003 in het internetarchief ).

web links

Wikibooks: SDL - leer- en lesmateriaal
Technische informatie

Individueel bewijs

  1. Laat 2.0.16 los .
  2. a b Middleware: SDL Group Description ( Engels ) MobyGames . 18 mei 2012. Ontvangen op 18 mei 2012: " Games die de zeer draagbare Simple DirectMedia Layer gebruiken. "
  3. a b SDL-taalbindingen. Gearchiveerd van het origineel op 16 januari 2013 ; geraadpleegd op 12 juli 2009 .
  4. a b SDL-taalbindingen. Gearchiveerd van het origineel op 21 augustus 2013 ; geraadpleegd op 25 oktober 2013 .
  5. Commentaar op de zlib-licentie bij de FSF (Engels)
  6. Games ( Engels ) libsdl.org. 18 mei 2012. Gearchiveerd van het origineel op 29 juni 2010. Opgehaald op 18 mei 2012.
  7. Getuigenissen van SDL . Galaxygameworks.com. Gearchiveerd van het origineel op 16 juli 2011. Ontvangen op 1 februari 2012.
  8. a b OpenTTD Ontwikkeling . Ontvangen 2 oktober 2013.
  9. a b CompilerenWesnoth . 27 februari 2010. Ontvangen op 19 maart 2010.
  10. SDLClient-Freeciv.org . Freeciv.wikia.com. Ontvangen 19 maart 2010.
  11. mei88: Spel van de Week #3 - Homeworld SDL ( Engels ) pandorapress.net. 23 juni 2011. Gearchiveerd van het origineel op 30 augustus 2011. Opgehaald op 8 mei 2012: “[…] vrijgegeven port van HomeworldSDL. Forumlid Edglex stelt je Pandora in staat om het uitstekende werk van de jongens van HomeworldSDL te ervaren."
  12. JA2 Stracciatella Feedback → Jagged Alliance 2 Android Stracciatella Port RC2 release - test aub ( Memento van 23 oktober 2012 in het internetarchief ) op het Bear's Pit Forum, 3 oktober 2011
  13. Ben Kuchera: De nieuwste Humble Bundle biedt geweldige games, promoot releases op meerdere platforms ( Engels ) In: ars technica . 14 december 2011. Ontvangen op 18 februari 2012: " Sommige ontwikkelaars zijn er vanaf de eerste dag klaar voor, maar meestal is een game alleen voor Windows en moet deze worden overgezet naar Mac en Linux. Ryan Gordon en Edward Rudd hebben hierin een belangrijke rol gespeeld, maar veel ontwikkelaars zullen ook intern porten. "
  14. Ben Kuchera: De nieuwste Humble Bundle biedt geweldige games, promoot releases op meerdere platforms ( Engels ) In: ars technica . Ontvangen 6 mei 2012.
  15. pro-linux.de
  16. SDL: A Quick Introduction to SDL 1.3 ( Memento van 24 juni 2012 in het internetarchief )
  17. Arnin Ronacher: A Gentle Inleiding tot de SDL 1.3 (Engels) 6 april 2011. Gearchiveerd van het origineel op 4 januari 2012. Ontvangen op 30 mei 2012.
  18. SDL 1.3 licentievoorwaarden ( Engels ) Sam Lantinga. 7 april 2011. Ontvangen op 21 augustus 2011.
  19. SDL 2.0.0 vrijgegeven! 13 augustus 2013, geraadpleegd op 25 oktober 2013 .
  20. ^ Index van / uitgave. Ontvangen op 15 mei 2020 .
  21. De Simple Directmedia Layer-documentatie ( Memento van 15 april 2013 in het internetarchief )
  22. Ryan C. Gordon: README.Platforms (Engels) libsdl.org. 9 april 2012. Gearchiveerd van het origineel op 20 januari 2012. Opgehaald op 7 mei 2012: “ Dit is een lijst van de platforms die SDL ondersteunt en wie ze onderhoudt. "
  23. SDL voor Android in 10 dronken stappen JD William op 27 juli 2011 (Engels)
  24. a b SDL-release-opmerkingen. 21 januari 2012, geraadpleegd op 29 juni 2012 .
  25. libsdl.org website: over sectie. 8 februari 2006, geraadpleegd op 29 juni 2012 .
  26. Ooliet . Ontvangen 19 maart 2010.