„Simple DirectMedia Layer“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
9ai877 (Diskussion | Beiträge) K ‚Bibliotheken‘ angebunden |
Änderung 255653823 von Matthias M. rückgängig gemacht; Technische Primärquellen sind unparteiisch und frei von Zweifeln, weswegen diese in der WP ausdrücklich als Quelle erlaubt sind. Siehe Wikipedia:Belege#Umgang_mit_parteiischen_Informationsquellen Markierung: Rückgängigmachung |
||
(45 dazwischenliegende Versionen von 31 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox Software |
{{Infobox Software |
||
|Name = |
|||
| Logo = [[Datei:SDL Logo.svg|278px|Logo von SDL]] |
|||
|Logo = [[Datei:Simple DirectMedia Layer, Logo.svg|278px|Logo von SDL]] |
|||
| Screenshot = |
|||
|Screenshot = |
|||
| Beschreibung = |
|||
|Beschreibung = |
|||
| Maintainer = |
|||
|Maintainer = |
|||
| Hersteller = Sam Lantinga und die SDL-Gemeinde |
|||
|Hersteller = Sam Lantinga und die SDL-Gemeinde |
|||
| AktuelleVersion = 2.0.5 |
|||
|Erscheinungsjahr = <!-- Wikidata --> |
|||
| AktuelleVersionFreigabeDatum = {{Datum|20|10|2016}} |
|||
|AktuelleVersion = <!-- Wikidata --> |
|||
| AktuelleVorabVersion = |
|||
|AktuelleVersionFreigabeDatum = <!-- Wikidata --> |
|||
| AktuelleVorabVersionFreigabeDatum = |
|||
|AktuelleVorabVersion = |
|||
| AktuelleEntwicklungsVersion = |
|||
|AktuelleVorabVersionFreigabeDatum = |
|||
| AktuelleEntwicklungsVersionFreigabeDatum = |
|||
|AktuelleEntwicklungsVersion = |
|||
| Betriebssystem = [[Linux]], [[Mac OS]], [[Microsoft Windows|Windows]] |
|||
|AktuelleEntwicklungsVersionFreigabeDatum = |
|||
| Programmiersprache = [[C (Programmiersprache)|C]] |
|||
|Betriebssystem = [[Linux]], [[macOS]], [[Windows]], [[Android (Betriebssystem)|Android]], [[iOS (Betriebssystem)|iOS]] |
|||
| Kategorie = [[Programmbibliothek]] |
|||
|Programmiersprache = [[C (Programmiersprache)|C]] |
|||
| Lizenz = [[GNU Lesser General Public License|LGPL]] ([[Freie Software]]), ab SDL 2.0 [[zlib-Lizenz]] |
|||
|Kategorie = [[Programmbibliothek]] |
|||
| Deutsch = ja |
|||
|Lizenz = [[zlib-Lizenz]] ([[Freie Software]]), bevor SDL 2.0.0: [[GNU Lesser General Public License|LGPL]] |
|||
| Website = [http://www.libsdl.org/ www.libsdl.org] |
|||
|Deutsch = ja |
|||
|Website = [https://www.libsdl.org/ www.libsdl.org] |
|||
|Dateien = |
|||
}} |
}} |
||
'''{{lang|en|Simple DirectMedia Layer}}''' (kurz '''SDL'''; [[Englische Sprache|englisch]] für „einfache ''DirectMedia''-Schicht“) ist eine freie [[Multimedia]]-[[Programmbibliothek|Bibliothek]] für verschiedene [[Betriebssystem]]e. Sie steht ab der Version 2.0 unter der [[zlib-Lizenz]]. Alle älteren Versionen vor 2.0 stehen unter der [[GNU Lesser General Public License]] (LGPL). |
|||
== Konzept == |
== Konzept == |
||
Die Bibliothek stellt eine plattformunabhängige [[Programmierschnittstelle|Schnittstelle]] (API) für Grafik-, Sound- und Eingabegeräte bereit, die sich hauptsächlich zur Entwicklung von Spielen und Multimediaanwendungen eignet. Durch die Unterstützung vieler verschiedener Plattformen kann für eine Applikation eine hohe Portabilität bzw. [[Plattformunabhängigkeit]] gewährleistet werden. SDL kann mit dieser Eigenschaft auch als [[Middleware]] verstanden werden.<ref name="mobygames">{{cite web|url=http://www.mobygames.com/game-group/middleware-sdl/|title=Middleware: SDL Group Description |quote=''Games that use the very portable Simple DirectMedia Layer.''|date=2012-05-18|accessdate=2012-05-18|language=englisch|publisher=[[MobyGames]]}}</ref> |
Die Bibliothek stellt eine plattformunabhängige [[Programmierschnittstelle|Schnittstelle]] (API) für Grafik-, Sound- und Eingabegeräte bereit, die sich hauptsächlich zur Entwicklung von Spielen und Multimediaanwendungen eignet. Durch die Unterstützung vieler verschiedener Plattformen kann für eine Applikation eine hohe Portabilität bzw. [[Plattformunabhängigkeit]] gewährleistet werden. SDL kann mit dieser Eigenschaft auch als [[Middleware]] verstanden werden.<ref name="mobygames">{{cite web|url=http://www.mobygames.com/game-group/middleware-sdl/|title=Middleware: SDL Group Description |quote=''Games that use the very portable Simple DirectMedia Layer.''|date=2012-05-18|accessdate=2012-05-18|language=englisch|publisher=[[MobyGames]]}}</ref> |
||
[[ |
[[Datei:SDL Layers-german.svg|mini|Abstraktionsebenen mit SDL auf verschiedenen Plattformen: ganz oben (blaugefärbt) sind die [[plattformübergreifend]]en Teile, ganz unten (braun gefärbt) die ausführende [[Hardware]], dazwischen verschiedene [[Betriebssystemplattform|Plattformen]] mit ihren (darüberliegenden) [[Programmierschnittstelle|Schnittstellen]] und [[Programmbibliothek|Bibliotheken]]]] |
||
Es existieren offizielle und inoffizielle SDL-Anbindungen für dutzende Programmiersprachen, die eine Integration in viele Projekte und Entwicklungskontexte möglich macht.<ref name="sdlbinding12"/><ref name="sdlbinding20"/> |
Es existieren offizielle und inoffizielle SDL-Anbindungen für dutzende Programmiersprachen, die eine Integration in viele Projekte und Entwicklungskontexte möglich macht.<ref name="sdlbinding12" /><ref name="sdlbinding20" /> |
||
Durch die Verwendung der liberalen [[zlib-Lizenz]] ist eine lizenzrechtlich problemlose Verwendung der SDL-Bibliotheken in binärer und Quelltext-Form sowohl in Open-Source (GPL-kompatibel<ref>[http://www.gnu.org/licenses/license-list.html#ZLib Kommentar zur zlib-Lizenz bei der FSF] (englisch)</ref>) wie proprietären Projekten (kein [[Copyleft]]) problemlos möglich. |
Durch die Verwendung der liberalen [[zlib-Lizenz]] ist eine lizenzrechtlich problemlose Verwendung der SDL-Bibliotheken in binärer und Quelltext-Form sowohl in Open-Source (GPL-kompatibel<ref>[http://www.gnu.org/licenses/license-list.html#ZLib Kommentar zur zlib-Lizenz bei der FSF] (englisch)</ref>) wie proprietären Projekten (kein [[Copyleft]]) problemlos möglich. |
||
Zeile 34: | Zeile 36: | ||
== Verbreitung == |
== Verbreitung == |
||
Bezeichnend für die Beliebtheit und Bekanntheit von SDL ist die Anzahl an Spielen und Programmen, die mit ihr geschrieben wurden, z. B. listet die Spieledatenbank [[MobyGames]] 105 Spiele im Jahr 2012,<ref name="mobygames" /> auf der SDL-Webseite selbst sind knapp 700 Spiele gelistet.<ref>{{cite web |url=http://www.libsdl.org/games.php?order=name&category=-1&completed=0&os=-1&match_name=&perpage=-1 |title=Games |date=2012-05-18 |accessdate=2012-05-18 |language=englisch |publisher=libsdl.org |archiveurl=https://web.archive.org/web/20100629004347/http://www.libsdl.org/games.php?order=name&category=-1&completed=0&os=-1&match_name=&perpage=-1 |archivedate=2010-06-29}}</ref> Bekannte kommerzielle Beispiele sind ''[[Angry Birds]]''<ref name="sdlangry">{{cite web|url=http://www.galaxygameworks.com/testimonials.html |title=SDL Testimonials |publisher=Galaxygameworks.com |language=en |accessdate=2012-02-01|archiveurl=https://web.archive.org/web/20110716163841/http://www.galaxygameworks.com/testimonials.html|archivedate=2011-07-16}}</ref> oder ''[[Unreal Tournament]]'', aus dem [[Open Source|Open-Source]]-Bereich z. B. ''[[OpenTTD]]'',<ref name="OOTTD">{{Internetquelle |url=https://github.com/OpenTTD/OpenTTD/blob/83b6defbfb0fa649a854767ae7c8b5a18f917e80/COMPILING.md |titel=Compiling OpenTTD |hrsg=[[GitHub]] |datum=2022 |abruf=2022-02-07}}</ref> ''[[The Battle for Wesnoth]]''<ref name="wesnoth">{{Internetquelle |url=https://github.com/wesnoth/wesnoth/blob/bb0206d1bf6e49d4e25c397ed30590b722fdec80/INSTALL.md |titel=Building Wesnoth from Source |hrsg=[[GitHub]] |datum=2022 |abruf=2022-02-07}}</ref>, [[OpenRA]]<ref>{{Internetquelle |url=https://github.com/OpenRA/OpenRA/wiki/Compiling |titel=Compiling OpenRA |hrsg=[[GitHub]] |datum=2022 |abruf=2022-02-07}}</ref> oder ''[[Freeciv]]''.<ref>{{Internetquelle |url=http://freeciv.wikia.com/wiki/SDLClient |titel=SDLClient - Freeciv |hrsg=[[Fandom.com]] |abruf=2022-02-07}}</ref> |
|||
Bezeichnend für die Beliebtheit und Bekanntheit von SDL ist die Anzahl an Spielen und Programmen, die mit ihr geschrieben wurden, z. B. listet die Spieledatenbank [[MobyGames]] {{Datum|||2012}} 105 Spiele,<ref name="mobygames"/> auf der SDL-Webseite selbst sind knapp 700 Spiele gelistet.<ref>{{cite web |url=http://www.libsdl.org/games.php?order=name&category=-1&completed=0&os=-1&match_name=&perpage=-1 |title=Games |date=2012-05-18 |accessdate=2012-05-18 |language=englisch |publisher=libsdl.org}}</ref> Bekannte kommerzielle Beispiele sind ''[[Angry Birds]]''<ref name="sdlangry">{{cite web|url=http://www.galaxygameworks.com/testimonials.html |title=SDL Testimonials |publisher=Galaxygameworks.com |date= |accessdate=2012-02-01|archiveurl=https://web.archive.org/web/20110716163841/http://www.galaxygameworks.com/testimonials.html|archivedate=2011-07-16}}</ref> oder ''[[Unreal Tournament]]'', aus dem [[Open Source]]-Bereich z. B. ''[[OpenTTD]]'',<ref name="OOTTD">{{cite web|url=http://www.openttd.org/en/development |title=OpenTTD Development |date= |accessdate=2013-10-02}}</ref> ''[[The Battle for Wesnoth]]''<ref name="wesnoth">{{cite web|url=http://wesnoth.org/wiki/CompilingWesnoth#Prerequisites |title=CompilingWesnoth |date=2010-02-27 |accessdate=2010-03-19}}</ref> oder ''[[Freeciv]]''.<ref>{{cite web|url=http://freeciv.wikia.com/wiki/SDLClient |title=SDLClient - Freeciv.org |publisher=Freeciv.wikia.com |date= |accessdate=2010-03-19}}</ref> |
|||
Bei [[plattformübergreifend]]en Spieleveröffentlichungen wird häufig auf SDL als Abstraktionsbibliothek gesetzt, da sich der Aufwand gegenüber Implementierungen mit den jeweiligen nativen Plattform-APIs signifikant verringert. Ein Beispiel sind die in den [[Humble Indie Bundle]]s enthaltenen meist SDL-basierenden Linux-, Mac- und [[Android (Betriebssystem)|Android]]-Versionen. |
Bei [[plattformübergreifend]]en Spieleveröffentlichungen wird häufig auf SDL als Abstraktionsbibliothek gesetzt, da sich der Aufwand gegenüber Implementierungen mit den jeweiligen nativen Plattform-APIs signifikant verringert. Ein Beispiel sind die in den [[Humble Indie Bundle]]s enthaltenen meist SDL-basierenden Linux-, Mac- und [[Android (Betriebssystem)|Android]]-Versionen. |
||
Weiter findet SDL häufig Verwendung für (spätere) [[Portierung (Software)| |
Weiter findet SDL häufig Verwendung für (spätere) [[Portierung (Software)|Portierungen]] auf neue Plattformen, z. B. ''[[Homeworld]]'' für das [[Pandora (Konsole)|Pandora]]-[[Handheld-Konsole|Handheld]]<ref>{{cite web|url=http://pandorapress.net/2011/06/23/game-of-the-week-3-homeworld-sdl/|title=Game of the Week #3 – Homeworld SDL |date=2011-06-23 |publisher=pandorapress.net |accessdate=2012-05-08|language=englisch |archiveurl=https://web.archive.org/web/20110830031132/http://pandorapress.net/2011/06/23/game-of-the-week-3-homeworld-sdl/ |archivedate=2011-08-30 |author=may88|quote=[…] released port of HomeworldSDL. Forum member Edglex enables your Pandora to experience the excellent work done by the guys at HomeworldSDL.}}</ref> oder ''[[Jagged Alliance 2]]''.<ref>{{Internetquelle |url=https://github.com/ja2-stracciatella/ja2-stracciatella/blob/432ee5b6398b5dca72529129c7cfd0476a5689dc/COMPILATION.md |titel=JA2-Stracciatella Compilation |hrsg=[[GitHub]] |datum=2022 |abruf=2022-02-07}}</ref> |
||
Auf SDL aufsetzende Nicht-Spiele-Anwendungen sind z. B. die [[Emulator]]en [[DOSBox]] und [[VisualBoyAdvance]]. |
Auf SDL aufsetzende Nicht-Spiele-Anwendungen sind z. B. die [[Emulator]]en [[DOSBox]] und [[VisualBoyAdvance]]. |
||
Zeile 45: | Zeile 46: | ||
Verwendung fand SDL auch an [[Universität]]en und in der Lehre in Kursen zu [[Multimedia]] und [[Informatik]]. |
Verwendung fand SDL auch an [[Universität]]en und in der Lehre in Kursen zu [[Multimedia]] und [[Informatik]]. |
||
[[ |
[[Datei:SDL-Workshop-IMG 2612.jpg|mini|Workshop zur Spielprogrammierung unter Verwendung der ''libSDL'', [[Universität Cádiz]] ([[Spanien]])]] |
||
Es wurden auch mehrere Bücher über das Entwickeln mit den SDL-Bibliotheken veröffentlicht (siehe den Literaturabschnitt unten). |
Es wurden auch mehrere Bücher über das Entwickeln mit den SDL-Bibliotheken veröffentlicht (siehe den Literaturabschnitt unten). |
||
== Entwicklungsgeschichte == |
== Entwicklungsgeschichte == |
||
=== Entstehung bei Loki Software === |
=== Entstehung bei Loki Software === |
||
SDL wurde von [[Sam Lantinga]] während seiner Zeit als leitender Programmierer (1999 bis 2001) bei [[Loki Software]] entwickelt. Der Simple DirectMedia-Layer bildet (oft auch im Zusammenhang mit den [[OpenGL]]- und [[OpenAL]]-Schnittstellen) die Grundlage für einige kommerzielle Spieletitel für Linux, die von Loki portiert wurden, wie z. B. ''[[Civilization: Call to Power]]'', ''[[Descent 3|Descent³]]'' oder auch ''[[Sid Meier’s Alpha Centauri]]''. |
|||
Schon damals wurde SDL unter die [[GNU Lesser General Public License|LGPL]] gestellt. Durch diesen Schritt wurde SDL schnell bekannt, da damit nun sowohl [[proprietär]]e als auch [[freie Software]] entwickelt werden konnte. |
|||
SDL wurde von [[Sam Lantinga]] während seiner Zeit als leitender Programmierer (1999 bis 2001) bei [[Loki Software]] entwickelt. Der Simple DirectMedia-Layer bildet (oft auch im Zusammenhang mit den [[OpenGL]]- und [[OpenAL]]-Schnittstellen) die Grundlage für einige kommerzielle Spieletitel für Linux, die von Loki portiert wurden, wie z. B. ''[[Call to Power|Civilization: Call to Power]]'', ''[[Descent 3|Descent³]]'' oder auch ''[[Sid Meier’s Alpha Centauri]]''. |
|||
Schon damals wurde SDL unter die [[GNU Lesser General Public License|LGPL]] gestellt. Durch diesen Schritt wurde SDL schnell bekannt, da damit nun sowohl [[proprietär]]e als auch [[freie Software]] entwickelt werden konnten. |
|||
=== Weiterentwicklung durch die Community === |
=== Weiterentwicklung durch die Community === |
||
Obwohl Sam Lantinga im Jahr 2001 von Loki Software zu [[Blizzard Entertainment]] wechselte, verwaltet er die Entwicklung von SDL noch immer und ist nach wie vor einer der aktivsten SDL-Entwickler. [[Ryan C. Gordon]], ein weiterer Ex-Loki-Mitarbeiter, arbeitet ebenfalls weiter an und mit SDL z. B. für die Linux- und Mac-Versionen von Spielen im [[Humble Indie Bundle]].<ref>{{cite web|last=Kuchera|first=Ben|title=The latest Humble Bundle offers amazing games, promotes multiplatform releases|url=http://arstechnica.com/gaming/news/2011/12/the-latest-humble-bundle-offers-amazing-games-promotes-multiplatform-releases.ars|work=ars technica|accessdate=2012-02-18|date=2011-12-14|language=englisch |quote=''Some developers are ready for it from day one, but usually a game is Windows-only and needs to get ported to Mac and Linux. Ryan Gordon and Edward Rudd have been instrumental in this, but a lot of developers will do ports internally as well.''}}</ref> |
|||
[[Datei:Ryan-Gordon-SELF-2009.png|mini|[[Ryan C. Gordon|Ryan „Icculus“ Gordon]], bekannter Verwender und Entwickler von SDL, z. B. im Rahmen des [[Humble Indie Bundle]]s.<ref>{{cite web |last=Kuchera |first=Ben |title=The latest Humble Bundle offers amazing games, promotes multiplatform releases |url=http://arstechnica.com/gaming/news/2011/12/the-latest-humble-bundle-offers-amazing-games-promotes-multiplatform-releases.ars |work=ars technica |accessdate=2012-05-06 |language=englisch}}</ref> ]] |
|||
[[Bild:Ryan-Gordon-SELF-2009.png|mini|[[Ryan C. Gordon|Ryan „Icculus“ Gordon]], bekannter Verwender und Entwickler von SDL, z. B. im Rahmen des [[Humble Indie Bundle]]s.<ref>{{cite web |last=Kuchera |first=Ben |title=The latest Humble Bundle offers amazing games, promotes multiplatform releases |url=http://arstechnica.com/gaming/news/2011/12/the-latest-humble-bundle-offers-amazing-games-promotes-multiplatform-releases.ars |work=ars technica |accessdate=2012-05-06 |language=englisch}}</ref>]] |
|||
Inzwischen gibt es eine große Community und weitere freiwillige Helfer, die sich an der Weiterentwicklung beteiligen. |
Inzwischen gibt es eine große Community und weitere freiwillige Helfer, die sich an der Weiterentwicklung beteiligen. |
||
Für über zwanzig Programmiersprachen existieren SDL-1.2-Anbindungen anderer Hersteller.<ref name="sdlbinding12">{{Internetquelle | |
Für über zwanzig Programmiersprachen existieren SDL-1.2-Anbindungen anderer Hersteller.<ref name="sdlbinding12">{{Internetquelle |url=http://www.libsdl.org/languages.php |titel=SDL Language Bindings |sprache=en |offline=1 |archiv-url=https://web.archive.org/web/20130116070511/http://www.libsdl.org/languages.php |archiv-datum=2013-01-16 |abruf=2009-07-12}}</ref> |
||
=== SDL 2 |
=== SDL 2 === |
||
Die Weiterentwicklung der Version 1.2 war als Version 1.3 geplant und wurde im August 2013 als Version 2.0 veröffentlicht.<ref>[http://www.pro-linux.de/news/1/20127/sdl-20.html pro-linux.de]</ref> Zusätzliche Fähigkeiten im Vergleich zur Vorversion sind Unterstützung für den Betrieb an mehreren Monitoren, durch Hardware beschleunigte zweidimensionale Grafik sowie bessere Unterstützung von [[Unicode]].<ref>{{Webarchiv |url=http://www.thegrumpyprogrammer.com/node/13 |text=SDL: A Quick Introduction to SDL 1.3 |wayback=20120624045325}}</ref> Weiterhin sollte Unterstützung von [[Multitouch]] und [[Haptik|haptischen]] [[Eingabegerät]]en z. B. mit [[Force Feedback]] Einzug halten.<ref>{{cite web |url=http://immersedcode.org/2011/4/6/sdl13-intro/ |first=Arnin |last=Ronacher |title=A Gentle Introduction into SDL 1.3 |date=2011-04-06 |language=englisch |accessdate=2012-05-30 |archiveurl=https://web.archive.org/web/20120104024108/http://immersedcode.org/2011/4/6/sdl13-intro/ |archivedate=2012-01-04}}</ref> |
|||
Im Gegensatz zu früheren Versionen nutzt SDL 2.0 die [[zlib-Lizenz]].<ref>{{cite web |url=http://forums.libsdl.org/viewtopic.php?t=7148 |title=SDL 1.3 licensing terms |publisher=Sam Lantinga |date=2011-04-07 |language=englisch| accessdate=2011-08-21}}</ref> Durch diese soll es möglich sein, proprietäre Produkte ([[Closed Source]]) zu entwickeln, welche die SDL dann auch statisch binden („[[Linker (Computerprogramm)|linken]]“) dürfen. |
|||
Snapshots ab Februar 2012 ändern die Versionsnummer von 1.3 auf 2.0. Die erste stabile Version von SDL 2.0 wurde am 13. August 2013 veröffentlicht.<ref name="sdlrelease200">{{Internetquelle |url=https://forums.libsdl.org/viewtopic.php?t=9375 |titel=SDL 2.0.0 Released! |datum=2013-08-13 |sprache=en |abruf=2013-10-25}}</ref> |
|||
Die Weiterentwicklung der Version 1.2 war als Version 1.3 geplant und wurde im August 2013 als Version 2.0 veröffentlicht.<ref>http://www.pro-linux.de/news/1/20127/sdl-20.html</ref> Zusätzliche Fähigkeiten im Vergleich zur Vorversion sind Unterstützung für den Betrieb an mehreren Monitoren, durch Hardware beschleunigte zweidimensionale Grafik sowie bessere Unterstützung von [[Unicode]].<ref>{{cite web |url=http://www.thegrumpyprogrammer.com/node/13 |title=SDL: A Quick Introduction to SDL 1.3 |publisher=[http://www.thegrumpyprogrammer.com/ The Grumpy Programmer] |date=2009-06-29 |accessdate=2010-02-07 |language=englisch}}</ref> Weiterhin sollte Unterstützung von [[Multitouch]] und [[Haptik|haptischen]] [[Eingabegerät]]en z. B. mit [[Force Feedback]] Einzug halten.<ref>{{cite web|url=http://immersedcode.org/2011/4/6/sdl13-intro/ |first=Arnin |last=Ronacher |title=A Gentle Introduction into SDL 1.3 |date=2011-04-06 |language=englisch| accessdate=2012-05-30}}</ref> |
|||
Die aktuelle stabile Version SDL 2.30.4 wurde am 17. Juni 2024 veröffentlicht.<ref name="sdlrelease204">{{Internetquelle |url=http://www.libsdl.org/release/ |titel=Index of /release |sprache=en |abruf=2024-07-01}}</ref> |
|||
Im Gegensatz zu früheren Versionen nutzt SDL 2.0 die [[zlib-Lizenz]].<ref>{{cite web |url=http://forums.libsdl.org/viewtopic.php?t=7148 |title=SDL 1.3 licensing terms |publisher=Sam Lantinga |date=2011-04-07 |language=englisch| accessdate=2011-08-21}}</ref> Durch diese soll es möglich sein, proprietäre Produkte ([[Closed Source]]) zu entwickeln, welche die SDL dann auch statisch binden („[[Linker (Computerprogramm)|linken]]“) dürfen. |
|||
Anbindungen an SDL-2.0 existieren Mitte 2014 für C, C++ und drei weitere Programmiersprachen.<ref name="sdlbinding20">{{Internetquelle |url=http://www.libsdl.org/languages.php |titel=SDL Language Bindings |sprache=en |offline=1 |archiv-url=https://web.archive.org/web/20130821222711/http://www.libsdl.org/languages.php |archiv-datum=2013-08-21 |abruf=2013-10-25}}</ref> |
|||
=== SDL 3 === |
|||
Die aktuelle stabile Version SDL 2.0.5 wurde am 20. Oktober 2016 veröffentlicht.<ref name="sdlrelease204">{{Internetquelle|url=http://www.libsdl.org/release/|titel=Index of /release|autor=|hrsg=|werk=|datum=|sprache=englisch|zugriff=2016-11-15}}</ref> |
|||
SDL 3 wurde im Januar 2025 als Version 3.2 veröffentlicht.<ref>{{Internetquelle |autor=Tim Schürmann |url=https://www.linux-magazin.de/news/sdl-3-bietet-runderneuerte-und-konsistentere-apis/ |titel=SDL 3 bietet runderneuerte und konsistentere APIs |hrsg=Linux Magazin |datum=2025-01-22 |sprache=de |abruf=2025-02-22}}</ref><ref>https://github.com/libsdl-org/SDL/releases/tag/release-3.2.0 Offizielle Release Notes von SDL 3.2</ref> Dabei wurden neue APIs, unter anderem für die GPU, Systemdialoge, Dateisystem und Webcams eingeführt. Die Audio-Schnittstelle wurde umfangreich überarbeitet. |
|||
Anbindungen an SDL-2.0 existieren Mitte 2014 für C, C++ und drei weitere Programmiersprachen.<ref name="sdlbinding20">{{Internetquelle | url=http://www.libsdl.org/languages.php | titel=SDL Language Bindings | archiv-url=https://web.archive.org/web/20130821222711/http://www.libsdl.org/languages.php | archiv-datum=2013-08-21 | zugriff=2013-10-25 | sprache=englisch}}</ref> |
|||
== Funktionalität == |
== Funktionalität == |
||
Die SDL-Bibliothek enthält vor allem für Multimedia-Anwendungen notwendige Funktionalitäten, für die eine weitverbreitete, plattformunabhängige und gleichzeitige performante API nicht existiert: |
Die SDL-Bibliothek enthält vor allem für Multimedia-Anwendungen notwendige Funktionalitäten, für die eine weitverbreitete, plattformunabhängige und gleichzeitige performante API nicht existiert: |
||
; Videoausgabe: Videomodus setzen, Zugriff auf den [[Framebuffer]], Nutzung der Hardwarebeschleunigung für Grafikoperationen, optional über [[EGL (Programmierschnittstelle)|EGL]] |
; Videoausgabe: Videomodus setzen, Zugriff auf den [[Framebuffer]], Nutzung der Hardwarebeschleunigung für Grafikoperationen, optional über [[EGL (Programmierschnittstelle)|EGL]] |
||
; Ereignis-Behandlung: [[Ereignis (Programmierung)|Ereignisse]] für [[Tastatur]], [[ |
; Ereignis-Behandlung: [[Ereignis (Programmierung)|Ereignisse]] für [[Tastatur]], [[Computermaus|Maus]], Programmende und Sichtbarkeit des Programms |
||
; Audioausgabe: In 8 und 16 bit, [[Stereofonie|mono/stereo]] |
; Audioausgabe: In 8 und 16 bit, [[Stereofonie|mono/stereo]] |
||
; Audio-CDs: Vollständige [[Compact Disc Digital Audio|Audio-CD]]-API (nicht mehr in SDL 2.0) |
; Audio-CDs: Vollständige [[Compact Disc Digital Audio|Audio-CD]]-API (nicht mehr in SDL 2.0) |
||
Zeile 90: | Zeile 88: | ||
; Konvertierung der Byte-Reihenfolge: [[Byte-Reihenfolge|Big Endian/Little Endian]] |
; Konvertierung der Byte-Reihenfolge: [[Byte-Reihenfolge|Big Endian/Little Endian]] |
||
Der Simple DirectMedia Layer stellt selbst keine Funktionen für 3D-Grafik zur Verfügung, weil mit [[OpenGL]] bereits eine weitverbreitete, plattformunabhängige 3D-API zur Verfügung steht. SDL wurde von Beginn an für das Zusammenspiel mit OpenGL entworfen und soll spezifisch die Multimediaaspekte abdecken, die außerhalb der |
Der Simple DirectMedia Layer stellt selbst keine Funktionen für 3D-Grafik zur Verfügung, weil mit [[OpenGL]] bereits eine weitverbreitete, plattformunabhängige 3D-API zur Verfügung steht. SDL wurde von Beginn an für das Zusammenspiel mit OpenGL entworfen und soll spezifisch die Multimediaaspekte abdecken, die außerhalb der OpenGL-Funktionalität liegen. Deshalb ergänzen sich beide Bibliotheken optimal und auch 3D-Spiele wie z. B. [[Tux Racer]] sind problemlos möglich. |
||
Weitere Einsatzmöglichkeiten wie Internet-Socket-Abstraktion oder Schriftzugriff werden bewusst nicht offiziell in SDL aufgenommen, jedoch als Erweiterungen von anderen Anbietern auf der LibSDL-Homepage angeboten.<ref>http://www.libsdl.org/cgi/docwiki.cgi/FrontPage?action=show&redirect=StartSeite</ref> |
|||
Weitere Einsatzmöglichkeiten wie Internet-Socket-Abstraktion oder Schriftzugriff werden bewusst nicht offiziell in SDL aufgenommen, jedoch als Erweiterungen von anderen Anbietern auf der LibSDL-Homepage angeboten.<ref>{{Webarchiv |url=http://www.libsdl.org/cgi/docwiki.cgi/FrontPage?action=show&redirect=StartSeite |text=The Simple Directmedia Layer documentation |wayback=20130415055547}}</ref> |
|||
== Unterstützte Plattformen == |
== Unterstützte Plattformen == |
||
[[Datei:Linux kernel and OpenGL video games.svg|mini|Beispiel für die Einbindung von SDL in eine Plattform, hier ein Linux-System. SDL bietet z. B. einem [[Computerspiel]] Zugriff auf Sound- und Eingabehardware über eigene Sound- und Input-APIs.]] |
|||
[[Bild:Linux kernel and OpenGL video games.svg|mini|Beispiel für die Einbindung von SDL in eine Plattform, hier ein Linux-System. SDL bietet z. B. einem [[Computerspiel]] Zugriff auf Sound- und Eingabehardware über eigene Sound- und Input-APIs.]] |
|||
Offiziell unterstützte Plattformen:<ref>{{cite web|url=http://hg.libsdl.org/SDL/file/default/README.Platforms|first=Ryan C. |last=Gordon |date=2012-04-09|accessdate=2012-05-07 |title=README.Platforms |language=englisch |publisher=libsdl.org |quote=''This is a list of the platforms SDL supports, and who maintains them.'' |archiveurl=https://web.archive.org/web/20120120121751/http://hg.libsdl.org/SDL/file/default/README.Platforms |archivedate=2012-01-20}}</ref> |
Offiziell unterstützte Plattformen:<ref>{{cite web|url=http://hg.libsdl.org/SDL/file/default/README.Platforms|first=Ryan C. |last=Gordon |date=2012-04-09|accessdate=2012-05-07 |title=README.Platforms |language=englisch |publisher=libsdl.org |quote=''This is a list of the platforms SDL supports, and who maintains them.'' |archiveurl=https://web.archive.org/web/20120120121751/http://hg.libsdl.org/SDL/file/default/README.Platforms |archivedate=2012-01-20}}</ref> |
||
* [[Android (Betriebssystem)|Android]] (seit SDL 2.0)<ref>[http://wilbefast.com/2011/07/29/sdl-for-android-in-10-drunken-steps/ SDL for Android in 10 drunken steps] J.D. William am 27. Juli 2011 (englisch)</ref> |
* [[Android (Betriebssystem)|Android]] (seit SDL 2.0)<ref>[http://wilbefast.com/2011/07/29/sdl-for-android-in-10-drunken-steps/ SDL for Android in 10 drunken steps] J.D. William am 27. Juli 2011 (englisch)</ref> |
||
* [[Linux]] |
* [[Linux]] |
||
* [[ |
* [[macOS]]<!--[[Mac OS Classic]]--> |
||
* [[ |
* [[Windows]] (Win32 und Win64) |
||
Unterstützung im SDL-Code enthalten, aber nicht offiziell unterstützt: |
Unterstützung im SDL-Code enthalten, aber nicht offiziell unterstützt: |
||
* [[AIX]] |
|||
* [[AmigaOS]], [[AROS (Betriebssystem)|AROS]] |
* [[AmigaOS]], [[AROS (Betriebssystem)|AROS]] |
||
* [[Atari]] |
* [[Atari]] |
||
* [[BeOS]] |
* [[BeOS]] |
||
* [[Berkeley Software Distribution|BSD]]-Derivate ([[FreeBSD]], [[OpenBSD]], [[ |
* [[Berkeley Software Distribution|BSD]]-Derivate ([[FreeBSD]], [[OpenBSD]], [[NetBSD]]) |
||
* [[Unix]] ([[AIX]], [[Solaris (Betriebssystem)|Solaris]], [[IRIX]], [[Tru64 UNIX]], [[QNX]]) |
|||
* [[Dreamcast]] |
* [[Dreamcast]] |
||
* [[IRIX]] |
|||
* [[Microsoft Windows CE]] |
* [[Microsoft Windows CE]] |
||
* [[MorphOS]] |
* [[MorphOS]] |
||
* [[Nintendo DS]] (seit SDL 1.2.12)<ref name="changes">{{Internetquelle |url=http://www.libsdl.org/release/changes-1.2.html |titel=SDL Release Notes |datum=2012-01-21 |sprache=en |abruf=2012-06-29}}</ref> |
|||
* [[NetBSD]] |
|||
* [[Nintendo DS]] (seit SDL 1.2.12)<ref name="changes">{{Internetquelle | url=http://www.libsdl.org/release/changes-1.2.html | titel=SDL Release Notes |datum=2012-01-21 | zugriff=2012-06-29 | sprache=en}}</ref> |
|||
* [[Pandora (Konsole)|Pandora]] (seit SDL 2.0) |
* [[Pandora (Konsole)|Pandora]] (seit SDL 2.0) |
||
* [[Symbian OS]] (seit SDL 1.2.12)<ref name="changes" /> |
|||
* [[Solaris (Betriebssystem)|Solaris]] |
|||
* [[Symbian OS]] (seit SDL 1.2.12)<ref name="changes"/> |
|||
* [[Tru64 UNIX]] |
|||
* [[QNX]] |
|||
SDL läuft auf sämtlichen [[unixoid]]en Plattformen, sofern diese den [[POSIX]]-Standard unterstützen. |
SDL läuft auf sämtlichen [[unixoid]]en Plattformen, sofern diese den [[POSIX]]-Standard unterstützen. |
||
Zeile 128: | Zeile 119: | ||
* [[Dingoo A320]] |
* [[Dingoo A320]] |
||
* [[GP2X]] |
* [[GP2X]] |
||
* [[ |
* [[Haiku (Betriebssystem)|Haiku]] |
||
* [[SkyOS]]<ref>{{Internetquelle | |
* [[SkyOS]]<ref>{{Internetquelle |url=http://forums.libsdl.org/viewtopic.php?t=986 |titel=libsdl.org website: about section |datum=2006-02-08 |abruf=2012-06-29}}</ref> |
||
* [[Xbox]] |
* [[Xbox]] |
||
== Beispielhafte Galerie SDL-basierender Spiele == |
== Beispielhafte Galerie SDL-basierender Spiele == |
||
<gallery class="center" mode="packed"> |
<gallery class="center" mode="packed"> |
||
Unknown horizons 3176.PNG|''[[Unknown Horizons]]'' |
|||
Freeciv-2.1.0-beta3-sdl_slack11.0.png | ''[[Freeciv]]'' |
|||
0 A.D. alpha 25 - playing as Spartans.jpg|''[[0 A.D.]]'' |
|||
Unknown horizons 3176.PNG | ''[[Unknown Horizons]]'' |
|||
Hwscreen.png|''[[Hedgewars]]'' |
|||
Fretsonfirex1.jpg|''[[Frets on Fire]]'' |
|||
Hwscreen.png | ''[[Hedgewars]]'' |
|||
OpenTTD-0.7.1-de.png|''[[OpenTTD]]''<ref name="OOTTD" /> |
|||
Fretsonfirex1.jpg | ''[[Frets on Fire]]'' |
|||
Wesnoth-1.6-5.jpg|''[[The Battle for Wesnoth]]''<ref name="wesnoth" /> |
|||
SMC15PromoShot.png|''[[Secret Maryo Chronicles]]'' |
|||
Wesnoth-1.6-5.jpg | ''[[The Battle for Wesnoth]]''<ref name="wesnoth"/> |
|||
OOlite Mac OS X screenshot.jpg|''[[Oolite]]''<ref>{{cite web |url=http://oolite.org/ |title=Oolite |language=en |accessdate=2010-03-19 |archiveurl=https://web.archive.org/web/20081218034149/http://oolite.org/ |archivedate=2008-12-18 |archivebot=2024-05-11 01:36:32 InternetArchiveBot }}</ref> |
|||
SMC15PromoShot.png | ''[[Secret Maryo Chronicles]]'' |
|||
Trine - Knight Block.jpg|''[[Trine (Computerspiel)|Trine]]'' |
|||
OOlite_Mac_OS_X_screenshot.jpg | ''[[Elite (Computerspiel)|Oolite]]''<ref>{{cite web |url=http://oolite.org/ |title=Oolite |date= |accessdate=2010-03-19}}</ref> |
|||
Trine - Knight Block.jpg | ''[[Trine (Computerspiel)|Trine]]'' |
|||
</gallery> |
</gallery> |
||
== Siehe auch == |
== Siehe auch == |
||
* [[Allegro (Programmbibliothek)]] |
|||
* [[Allegro-Bibliothek]] |
|||
* [[ClanLib]] |
* [[ClanLib]] |
||
* [[Simple and Fast Multimedia Library]] (SFML) |
* [[Simple and Fast Multimedia Library]] (SFML) |
||
* [[SMPEG]] |
|||
== Literatur == |
== Literatur == |
||
* Alberto García Serrano: ''Programación de videojuegos en SDL''. Ediversitas, ISBN 84-95836-08-4 (Buch über die Verwendung der SDL in der Videospiele-Entwicklung, spanisch). |
|||
* Ernest Pazera: ''Focus On SDL''. Muska & Lipman / Premier-Trade, ISBN 1-59200-030-4 (weiteres Buch zur SDL, welches sich ebenfalls mit weiteren Bibliotheken für den Simple DirectMedia Layer, wie beispielsweise SDL_net, befasst). |
|||
* Alberto García Serrano: ''Programación de videojuegos en SDL'', Ediversitas, ISBN 8495836084, ''Buch über die Verwendung der SDL in der Videospiele-Entwicklung in [[Spanische_Sprache|Spanisch]].'' |
|||
* |
* Ron Penton: ''Data Structures for Game Programmers'', Muska & Lipman/Premier-Trade, ISBN 1-931841-94-2 (geht hauptsächlich zwar auf Datenstrukturen eines Spiels ein, enthält aber auch Beispiele mit der SDL). |
||
* John R. Hall: ''Programming Linux Games''. No Starch, ISBN 1-886411-49-2 (Erstes Buch, welches sich mit der SDL befasst. Enthält auch Informationen über die Programmierung in Linux im Allgemeinen und der Netzwerkprogrammierung), Onlineversion: {{Webarchiv |url=http://www.overcode.net/~overcode/writing/plg/local/release/plg-final-pdf-no-really-i-mean-it-this-time.pdf |text=overcode.net |format=PDF |wayback=20030122200047}} {{Webarchiv |url=http://www.overcode.net/~overcode/writing/plg/local/ |text=LaTeX-Sourcen |wayback=20030214004255}}. |
|||
* Ron Penton: ''Data Structures for Game Programmers'', Muska & Lipman/Premier-Trade, ISBN 1931841942, ''Geht hauptsächlich zwar auf Datenstrukturen eines Spiels ein, beinhaltet aber auch Beispiele mit der SDL.'' |
|||
* John R. Hall: ''Programming Linux Games'', No Starch, ISBN 1886411492, ''Erstes Buch, welches sich mit der SDL befasst. Enthält auch Informationen über die Programmierung in Linux im Allgemeinen und der Netzwerkprogrammierung'', Onlineversion: {{Webarchiv | url=http://www.overcode.net/~overcode/writing/plg/local/release/plg-final-pdf-no-really-i-mean-it-this-time.pdf | wayback=20030122200047 | text=PDF}}, {{Webarchiv | url=http://www.overcode.net/~overcode/writing/plg/local/ | wayback=20030214004255 | text=LaTex-Sourcen}}. |
|||
== Weblinks == |
== Weblinks == |
||
{{Commonscat}} |
|||
{{Wikibooks|SDL}} |
{{Wikibooks|SDL}} |
||
* [http://libsdl.org/ Offizielle internationale SDL-Website] |
|||
* [http://libsdl. |
* [http://libsdl.de/ Offizielle deutsche SDL-Website] |
||
* [http://libsdl.de/ Offizielle deutsche SDL-Webseite] |
|||
* {{MobyGames|game-group/middleware-sdl/}} |
* {{MobyGames|game-group/middleware-sdl/}} |
||
;Technische Information |
; Technische Information |
||
* [http://wiki.libsdl.org/FrontPage SDL Documentation Wiki] (englisch) |
* [http://wiki.libsdl.org/FrontPage SDL Documentation Wiki] (englisch) |
||
* [http://wiki.delphigl.com/index.php/SDL-Funktions%C3%BCbersicht Deutsche Übersetzung der SDL-Funktionen] |
* [http://wiki.delphigl.com/index.php/SDL-Funktions%C3%BCbersicht Deutsche Übersetzung der SDL-Funktionen] |
||
== Einzelnachweise == |
== Einzelnachweise == |
||
<references /> |
|||
[[Kategorie:Grafikbibliothek]] |
|||
<references/> |
|||
[[Kategorie:C-Bibliothek]] |
|||
[[Kategorie: |
[[Kategorie:Computerspiel-Entwicklungssystem]] |
||
[[Kategorie:Computerspiel-Entwicklung]] |
|||
[[Kategorie:Computerspielmusik]] |
[[Kategorie:Computerspielmusik]] |
||
[[Kategorie:Freie Systemsoftware]] |
[[Kategorie:Freie Systemsoftware]] |
Aktuelle Version vom 3. Mai 2025, 12:12 Uhr
Simple DirectMedia Layer
| |
---|---|
![]() | |
Basisdaten
| |
Entwickler | Sam Lantinga und die SDL-Gemeinde |
Erscheinungsjahr | 1998 |
Aktuelle Version | 3.2.10[1] (1. April 2025) |
Betriebssystem | Linux, macOS, Windows, Android, iOS |
Programmiersprache | C |
Kategorie | Programmbibliothek |
Lizenz | zlib-Lizenz (Freie Software), bevor SDL 2.0.0: LGPL |
deutschsprachig | ja |
www.libsdl.org |
Simple DirectMedia Layer (kurz SDL; englisch für „einfache DirectMedia-Schicht“) ist eine freie Multimedia-Bibliothek für verschiedene Betriebssysteme. Sie steht ab der Version 2.0 unter der zlib-Lizenz. Alle älteren Versionen vor 2.0 stehen unter der GNU Lesser General Public License (LGPL).
Konzept
[Bearbeiten | Quelltext bearbeiten]Die Bibliothek stellt eine plattformunabhängige Schnittstelle (API) für Grafik-, Sound- und Eingabegeräte bereit, die sich hauptsächlich zur Entwicklung von Spielen und Multimediaanwendungen eignet. Durch die Unterstützung vieler verschiedener Plattformen kann für eine Applikation eine hohe Portabilität bzw. Plattformunabhängigkeit gewährleistet werden. SDL kann mit dieser Eigenschaft auch als Middleware verstanden werden.[2]

Es existieren offizielle und inoffizielle SDL-Anbindungen für dutzende Programmiersprachen, die eine Integration in viele Projekte und Entwicklungskontexte möglich macht.[3][4]
Durch die Verwendung der liberalen zlib-Lizenz ist eine lizenzrechtlich problemlose Verwendung der SDL-Bibliotheken in binärer und Quelltext-Form sowohl in Open-Source (GPL-kompatibel[5]) wie proprietären Projekten (kein Copyleft) problemlos möglich.
SDL ist in C geschrieben und zeichnet sich besonders durch einen kompakten Code aus, was diese Bibliothek auch für Anfänger leicht erlernbar machen soll. Durch die weite Verbreitung und die Nähe zur Open-Source-Bewegung existieren viele frei verfügbare Beispielprogramme für verschiedene Anwendungsfälle, die zeigen, wie die Bibliothek verwendet werden kann.
Verbreitung
[Bearbeiten | Quelltext bearbeiten]Bezeichnend für die Beliebtheit und Bekanntheit von SDL ist die Anzahl an Spielen und Programmen, die mit ihr geschrieben wurden, z. B. listet die Spieledatenbank MobyGames 105 Spiele im Jahr 2012,[2] auf der SDL-Webseite selbst sind knapp 700 Spiele gelistet.[6] Bekannte kommerzielle Beispiele sind Angry Birds[7] oder Unreal Tournament, aus dem Open-Source-Bereich z. B. OpenTTD,[8] The Battle for Wesnoth[9], OpenRA[10] oder Freeciv.[11]
Bei plattformübergreifenden Spieleveröffentlichungen wird häufig auf SDL als Abstraktionsbibliothek gesetzt, da sich der Aufwand gegenüber Implementierungen mit den jeweiligen nativen Plattform-APIs signifikant verringert. Ein Beispiel sind die in den Humble Indie Bundles enthaltenen meist SDL-basierenden Linux-, Mac- und Android-Versionen.
Weiter findet SDL häufig Verwendung für (spätere) Portierungen auf neue Plattformen, z. B. Homeworld für das Pandora-Handheld[12] oder Jagged Alliance 2.[13]
Auf SDL aufsetzende Nicht-Spiele-Anwendungen sind z. B. die Emulatoren DOSBox und VisualBoyAdvance.
Verwendung fand SDL auch an Universitäten und in der Lehre in Kursen zu Multimedia und Informatik.

Es wurden auch mehrere Bücher über das Entwickeln mit den SDL-Bibliotheken veröffentlicht (siehe den Literaturabschnitt unten).
Entwicklungsgeschichte
[Bearbeiten | Quelltext bearbeiten]Entstehung bei Loki Software
[Bearbeiten | Quelltext bearbeiten]SDL wurde von Sam Lantinga während seiner Zeit als leitender Programmierer (1999 bis 2001) bei Loki Software entwickelt. Der Simple DirectMedia-Layer bildet (oft auch im Zusammenhang mit den OpenGL- und OpenAL-Schnittstellen) die Grundlage für einige kommerzielle Spieletitel für Linux, die von Loki portiert wurden, wie z. B. Civilization: Call to Power, Descent³ oder auch Sid Meier’s Alpha Centauri.
Schon damals wurde SDL unter die LGPL gestellt. Durch diesen Schritt wurde SDL schnell bekannt, da damit nun sowohl proprietäre als auch freie Software entwickelt werden konnte.
Weiterentwicklung durch die Community
[Bearbeiten | Quelltext bearbeiten]Obwohl Sam Lantinga im Jahr 2001 von Loki Software zu Blizzard Entertainment wechselte, verwaltet er die Entwicklung von SDL noch immer und ist nach wie vor einer der aktivsten SDL-Entwickler. Ryan C. Gordon, ein weiterer Ex-Loki-Mitarbeiter, arbeitet ebenfalls weiter an und mit SDL z. B. für die Linux- und Mac-Versionen von Spielen im Humble Indie Bundle.[14]

Inzwischen gibt es eine große Community und weitere freiwillige Helfer, die sich an der Weiterentwicklung beteiligen.
Für über zwanzig Programmiersprachen existieren SDL-1.2-Anbindungen anderer Hersteller.[3]
SDL 2
[Bearbeiten | Quelltext bearbeiten]Die Weiterentwicklung der Version 1.2 war als Version 1.3 geplant und wurde im August 2013 als Version 2.0 veröffentlicht.[16] Zusätzliche Fähigkeiten im Vergleich zur Vorversion sind Unterstützung für den Betrieb an mehreren Monitoren, durch Hardware beschleunigte zweidimensionale Grafik sowie bessere Unterstützung von Unicode.[17] Weiterhin sollte Unterstützung von Multitouch und haptischen Eingabegeräten z. B. mit Force Feedback Einzug halten.[18] Im Gegensatz zu früheren Versionen nutzt SDL 2.0 die zlib-Lizenz.[19] Durch diese soll es möglich sein, proprietäre Produkte (Closed Source) zu entwickeln, welche die SDL dann auch statisch binden („linken“) dürfen.
Snapshots ab Februar 2012 ändern die Versionsnummer von 1.3 auf 2.0. Die erste stabile Version von SDL 2.0 wurde am 13. August 2013 veröffentlicht.[20]
Die aktuelle stabile Version SDL 2.30.4 wurde am 17. Juni 2024 veröffentlicht.[21]
Anbindungen an SDL-2.0 existieren Mitte 2014 für C, C++ und drei weitere Programmiersprachen.[4]
SDL 3
[Bearbeiten | Quelltext bearbeiten]SDL 3 wurde im Januar 2025 als Version 3.2 veröffentlicht.[22][23] Dabei wurden neue APIs, unter anderem für die GPU, Systemdialoge, Dateisystem und Webcams eingeführt. Die Audio-Schnittstelle wurde umfangreich überarbeitet.
Funktionalität
[Bearbeiten | Quelltext bearbeiten]Die SDL-Bibliothek enthält vor allem für Multimedia-Anwendungen notwendige Funktionalitäten, für die eine weitverbreitete, plattformunabhängige und gleichzeitige performante API nicht existiert:
- Videoausgabe
- Videomodus setzen, Zugriff auf den Framebuffer, Nutzung der Hardwarebeschleunigung für Grafikoperationen, optional über EGL
- Ereignis-Behandlung
- Ereignisse für Tastatur, Maus, Programmende und Sichtbarkeit des Programms
- Audioausgabe
- In 8 und 16 bit, mono/stereo
- Audio-CDs
- Vollständige Audio-CD-API (nicht mehr in SDL 2.0)
- Threads
- Thread-API, Semaphore, Mutex-Objekte und Condition-Variablen zur Synchronisation
- Zeitgeber
- Periodisch, Wartezeit, abgelaufene Zeit abfragen
- Konvertierung der Byte-Reihenfolge
- Big Endian/Little Endian
Der Simple DirectMedia Layer stellt selbst keine Funktionen für 3D-Grafik zur Verfügung, weil mit OpenGL bereits eine weitverbreitete, plattformunabhängige 3D-API zur Verfügung steht. SDL wurde von Beginn an für das Zusammenspiel mit OpenGL entworfen und soll spezifisch die Multimediaaspekte abdecken, die außerhalb der OpenGL-Funktionalität liegen. Deshalb ergänzen sich beide Bibliotheken optimal und auch 3D-Spiele wie z. B. Tux Racer sind problemlos möglich.
Weitere Einsatzmöglichkeiten wie Internet-Socket-Abstraktion oder Schriftzugriff werden bewusst nicht offiziell in SDL aufgenommen, jedoch als Erweiterungen von anderen Anbietern auf der LibSDL-Homepage angeboten.[24]
Unterstützte Plattformen
[Bearbeiten | Quelltext bearbeiten]
Offiziell unterstützte Plattformen:[25]
Unterstützung im SDL-Code enthalten, aber nicht offiziell unterstützt:
- AmigaOS, AROS
- Atari
- BeOS
- BSD-Derivate (FreeBSD, OpenBSD, NetBSD)
- Unix (AIX, Solaris, IRIX, Tru64 UNIX, QNX)
- Dreamcast
- Microsoft Windows CE
- MorphOS
- Nintendo DS (seit SDL 1.2.12)[27]
- Pandora (seit SDL 2.0)
- Symbian OS (seit SDL 1.2.12)[27]
SDL läuft auf sämtlichen unixoiden Plattformen, sofern diese den POSIX-Standard unterstützen.
Auf sonstige Art unterstützte Plattformen:
- DOS (FreeDOS und Ähnliche; Windows-Versionen laufen mit Hilfe von HX DOS Extender)
- Dingoo A320
- GP2X
- Haiku
- SkyOS[28]
- Xbox
Beispielhafte Galerie SDL-basierender Spiele
[Bearbeiten | Quelltext bearbeiten]Siehe auch
[Bearbeiten | Quelltext bearbeiten]Literatur
[Bearbeiten | Quelltext bearbeiten]- Alberto García Serrano: Programación de videojuegos en SDL. Ediversitas, ISBN 84-95836-08-4 (Buch über die Verwendung der SDL in der Videospiele-Entwicklung, spanisch).
- Ernest Pazera: Focus On SDL. Muska & Lipman / Premier-Trade, ISBN 1-59200-030-4 (weiteres Buch zur SDL, welches sich ebenfalls mit weiteren Bibliotheken für den Simple DirectMedia Layer, wie beispielsweise SDL_net, befasst).
- Ron Penton: Data Structures for Game Programmers, Muska & Lipman/Premier-Trade, ISBN 1-931841-94-2 (geht hauptsächlich zwar auf Datenstrukturen eines Spiels ein, enthält aber auch Beispiele mit der SDL).
- John R. Hall: Programming Linux Games. No Starch, ISBN 1-886411-49-2 (Erstes Buch, welches sich mit der SDL befasst. Enthält auch Informationen über die Programmierung in Linux im Allgemeinen und der Netzwerkprogrammierung), Onlineversion: overcode.net ( vom 22. Januar 2003 im Internet Archive; PDF) LaTeX-Sourcen ( vom 14. Februar 2003 im Internet Archive).
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Offizielle internationale SDL-Website
- Offizielle deutsche SDL-Website
- Simple DirectMedia Layer bei MobyGames (englisch)
- Technische Information
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Release 3.2.10. 1. April 2025 (abgerufen am 1. April 2025).
- ↑ a b Middleware: SDL Group Description. MobyGames, 18. Mai 2012, abgerufen am 18. Mai 2012 (englisch): „Games that use the very portable Simple DirectMedia Layer.“
- ↑ a b SDL Language Bindings. Archiviert vom (nicht mehr online verfügbar) am 16. Januar 2013; abgerufen am 12. Juli 2009 (englisch).
- ↑ a b SDL Language Bindings. Archiviert vom (nicht mehr online verfügbar) am 21. August 2013; abgerufen am 25. Oktober 2013 (englisch).
- ↑ Kommentar zur zlib-Lizenz bei der FSF (englisch)
- ↑ Games. libsdl.org, 18. Mai 2012, archiviert vom am 29. Juni 2010; abgerufen am 18. Mai 2012 (englisch).
- ↑ SDL Testimonials. Galaxygameworks.com, archiviert vom am 16. Juli 2011; abgerufen am 1. Februar 2012 (englisch).
- ↑ a b Compiling OpenTTD. GitHub, 2022, abgerufen am 7. Februar 2022.
- ↑ a b Building Wesnoth from Source. GitHub, 2022, abgerufen am 7. Februar 2022.
- ↑ Compiling OpenRA. GitHub, 2022, abgerufen am 7. Februar 2022.
- ↑ SDLClient - Freeciv. Fandom.com, abgerufen am 7. Februar 2022.
- ↑ may88: Game of the Week #3 – Homeworld SDL. pandorapress.net, 23. Juni 2011, archiviert vom am 30. August 2011; abgerufen am 8. Mai 2012 (englisch): „[…] released port of HomeworldSDL. Forum member Edglex enables your Pandora to experience the excellent work done by the guys at HomeworldSDL.“
- ↑ JA2-Stracciatella Compilation. GitHub, 2022, abgerufen am 7. Februar 2022.
- ↑ Ben Kuchera: The latest Humble Bundle offers amazing games, promotes multiplatform releases. In: ars technica. 14. Dezember 2011, abgerufen am 18. Februar 2012 (englisch): „Some developers are ready for it from day one, but usually a game is Windows-only and needs to get ported to Mac and Linux. Ryan Gordon and Edward Rudd have been instrumental in this, but a lot of developers will do ports internally as well.“
- ↑ Ben Kuchera: The latest Humble Bundle offers amazing games, promotes multiplatform releases. In: ars technica. Abgerufen am 6. Mai 2012 (englisch).
- ↑ pro-linux.de
- ↑ SDL: A Quick Introduction to SDL 1.3 ( vom 24. Juni 2012 im Internet Archive)
- ↑ Arnin Ronacher: A Gentle Introduction into SDL 1.3. 6. April 2011, archiviert vom am 4. Januar 2012; abgerufen am 30. Mai 2012 (englisch).
- ↑ SDL 1.3 licensing terms. Sam Lantinga, 7. April 2011, abgerufen am 21. August 2011 (englisch).
- ↑ SDL 2.0.0 Released! 13. August 2013, abgerufen am 25. Oktober 2013 (englisch).
- ↑ Index of /release. Abgerufen am 1. Juli 2024 (englisch).
- ↑ Tim Schürmann: SDL 3 bietet runderneuerte und konsistentere APIs. Linux Magazin, 22. Januar 2025, abgerufen am 22. Februar 2025.
- ↑ https://github.com/libsdl-org/SDL/releases/tag/release-3.2.0 Offizielle Release Notes von SDL 3.2
- ↑ The Simple Directmedia Layer documentation ( vom 15. April 2013 im Internet Archive)
- ↑ Ryan C. Gordon: README.Platforms. libsdl.org, 9. April 2012, archiviert vom am 20. Januar 2012; abgerufen am 7. Mai 2012 (englisch): „This is a list of the platforms SDL supports, and who maintains them.“
- ↑ SDL for Android in 10 drunken steps J.D. William am 27. Juli 2011 (englisch)
- ↑ a b SDL Release Notes. 21. Januar 2012, abgerufen am 29. Juni 2012 (englisch).
- ↑ libsdl.org website: about section. 8. Februar 2006, abgerufen am 29. Juni 2012.
- ↑ Oolite. Archiviert vom am 18. Dezember 2008; abgerufen am 19. März 2010 (englisch). Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.