Einfache DirectMedia-Ebene - Simple DirectMedia Layer
Originalautor(en) | Sam Lantinga |
---|---|
Entwickler | SDL-Community |
Erstveröffentlichung | 1998 |
Stabile Version | 2.0.16 / 10. August 2021
|
Repository | |
Geschrieben in | C |
Betriebssystem |
Linux , Windows, AmigaOS , macOS 10.4+ , iOS 3.1.3+ , tvOS , Android 2.3.3+ , FreeBSD 8.4+ , Haiku Zusätzlich vor v2.0.0 (veraltet): RISC OS |
Typ | API |
Lizenz |
zlib-Lizenz vor 2.0.0: GNU LGPL |
Webseite | www |
Simple Directmedia Layer ( SDL ) ist eine plattformübergreifende Software - Entwicklung Bibliothek entwickelt , um eine zu schaffen , Hardwareabstraktionsschicht für Computer Multimedia - Hardware - Komponenten . Softwareentwickler können damit leistungsstarke Computerspiele und andere Multimedia-Anwendungen schreiben , die auf vielen Betriebssystemen wie Android , iOS , Linux , macOS und Windows ausgeführt werden können .
SDL verwaltet Video , Audio , Eingabegeräte , CD-ROM , Threads , das Laden gemeinsam genutzter Objekte , Netzwerke und Timer. Für 3D-Grafiken kann es einen OpenGL- , Vulkan- , Metal- oder Direct3D11- Kontext (ältere Direct3D-Version 9 wird ebenfalls unterstützt) verarbeiten. Ein weit verbreitetes Missverständnis ist, dass SDL eine Spiel-Engine ist , aber das stimmt nicht. Die Bibliothek eignet sich jedoch zum direkten Erstellen von Spielen oder ist indirekt durch darauf aufbauende Engines nutzbar .
Die Bibliothek ist intern in C und je nach Zielplattform möglicherweise C++ oder Objective-C geschrieben und stellt die Anwendungsprogrammierschnittstelle in C bereit , wobei Bindungen zu anderen Sprachen verfügbar sind. Es handelt sich um freie Open-Source-Software , die seit Version 2.0 den Anforderungen der zlib-Lizenz und mit früheren Versionen der GNU Lesser General Public License unterliegt . Unter der zlib-Lizenz ist SDL 2.0 im Gegensatz zu SDL 1.2 für das statische Linken in Closed-Source- Projekten frei verfügbar . SDL 2.0, das 2013 veröffentlicht wurde, war eine wichtige Abkehr von früheren Versionen und bietet mehr Möglichkeiten für die 3D-Hardwarebeschleunigung, aber bricht die Abwärtskompatibilität.
SDL wird in der Branche sowohl bei großen als auch bei kleinen Projekten umfassend eingesetzt. Auf der Website der Bibliothek wurden über 700 Spiele, 180 Anwendungen und 120 Demos veröffentlicht.
Geschichte
Sam Lantinga erstellte die Bibliothek und veröffentlichte sie erstmals Anfang 1998, während er für Loki Software arbeitete . Die Idee dazu kam ihm bei der Portierung einer Windows-Anwendung auf den Macintosh. Anschließend benutzte er SDL, um Doom auf BeOS zu portieren (siehe Doom-Quellports ). Mehrere andere kostenlose Bibliotheken wurden entwickelt, um neben SDL zu arbeiten, wie SMPEG und OpenAL . Er gründete 2008 auch Galaxy Gameworks, um SDL kommerziell zu unterstützen, obwohl die Pläne des Unternehmens derzeit aus Zeitgründen auf Eis liegen.
Kurz nachdem Galaxy Gameworks auf Eis gelegt wurde, kündigte Lantinga an, dass SDL 1.3 (das später zu SDL 2.0 wurde) unter der zlib-Lizenz lizenziert werden würde . Lantinga kündigte SDL 2.0 am 14. Juli 2012 an und kündigte gleichzeitig seinen Beitritt zu Valve an , dessen erste Version am selben Tag angekündigt wurde, an dem er zum Unternehmen kam. Lantinga kündigte die stabile Veröffentlichung von SDL 2.0.0 am 13. August 2013 an.
SDL 2.0 ist ein wichtiges Update der SDL 1.2- Codebasis mit einer anderen, nicht abwärtskompatiblen API . Es ersetzt mehrere Teile der 1.2-API durch eine allgemeinere Unterstützung für mehrere Eingabe- und Ausgabeoptionen. Einige Funktionserweiterungen umfassen die Unterstützung mehrerer Fenster, hardwarebeschleunigte 2D-Grafiken und eine bessere Unicode- Unterstützung.
Unterstützung für Mir und Wayland wurde in SDL 2.0.2 hinzugefügt und standardmäßig in SDL 2.0.4 aktiviert. Version 2.0.4 bot auch eine bessere Unterstützung für Android.
Softwarearchitektur
SDL ist ein Wrapper um die betriebssystemspezifischen Funktionen, auf die das Spiel zugreifen muss. Der einzige Zweck von SDL besteht darin, ein gemeinsames Framework für den Zugriff auf diese Funktionen für mehrere Betriebssysteme (plattformübergreifend) bereitzustellen. SDL bietet Unterstützung für 2D-Pixeloperationen, Sound, Dateizugriff, Ereignisbehandlung, Timing und Threading. Es wird oft verwendet, um OpenGL zu ergänzen, indem die grafische Ausgabe eingerichtet und Maus- und Tastatureingaben bereitgestellt werden, da OpenGL nur Rendering umfasst.
Ein Spiel, das den Simple DirectMedia Layer verwendet, läuft nicht automatisch auf jedem Betriebssystem; weitere Anpassungen müssen vorgenommen werden. Diese sind auf ein Minimum reduziert, da SDL auch einige Abstraktions-APIs für häufige Funktionen eines Betriebssystems enthält.
Die Syntax von SDL ist funktionsbasiert: Alle in SDL ausgeführten Operationen werden durch die Übergabe von Parametern an Unterprogramme (Funktionen) ausgeführt. Spezielle Strukturen werden auch verwendet, um die spezifischen Informationen zu speichern, die SDL verarbeiten muss. SDL-Funktionen werden in mehrere verschiedene Subsysteme eingeteilt.
Subsysteme
SDL ist in mehrere Subsysteme unterteilt:
- Grundlagen
- Initialisierung und Herunterfahren, Konfigurationsvariablen, Fehlerbehandlung, Protokollbehandlung
- Video
- Anzeige- und Fensterverwaltung, Oberflächenfunktionen, Rendering-Beschleunigung usw.
- Eingabeereignisse
- Ereignisbehandlung , Unterstützung für Tastatur, Maus, Joystick und Gamecontroller
- Feedback erzwingen
- SDL_haptic.h implementiert Unterstützung für "Force Feedback"
- Audio
- SDL_audio.h implementiert Audio Device Management, Playing and Recording
- Themen
- Multithreading : Thread-Management, Thread-Synchronisations-Primitive, Atomare Operationen
- Timer
- Timer-Unterstützung
- Dateiabstraktion
- Dateisystempfade, Datei-E/A-Abstraktion
- Unterstützung für gemeinsame Objekte
- Laden von gemeinsam genutzten Objekten und Funktionssuche
- Plattform- und CPU-Informationen
- Plattformerkennung, CPU-Feature-Erkennung, Byte-Reihenfolge und Byte-Swapping, Bit-Manipulation
- Energieverwaltung
- Energieverwaltungsstatus
- Zusätzlich
- Plattformspezifische Funktionalität
Neben dieser grundlegenden, Low-Level-Unterstützung gibt es auch einige separate offizielle Bibliotheken, die einige weitere Funktionen bieten. Diese umfassen die „Standardbibliothek“ und werden auf der offiziellen Website bereitgestellt und sind in der offiziellen Dokumentation enthalten:
- SDL_image — Unterstützung für mehrere Bildformate
- SDL_mixer — komplexe Audiofunktionen , hauptsächlich für die Tonmischung
- SDL_net – Netzwerkunterstützung
- SDL_ttf — Unterstützung für TrueType- Schrift-Rendering
- SDL_rtf — einfaches Rendern im Rich-Text-Format
Es gibt auch andere, nicht standardmäßige Bibliotheken. Zum Beispiel: SDL_Collide auf SourceForge erstellt von Amir Taaki .
Sprachbindungen
Die SDL 2.0-Bibliothek verfügt über Sprachbindungen für:
Unterstützte Back-Ends
Aufgrund der Art und Weise, wie SDL entworfen wurde, ist ein Großteil des Quellcodes für jedes Betriebssystem in separate Module aufgeteilt, um Aufrufe an das zugrunde liegende System zu senden. Beim Kompilieren von SDL werden die entsprechenden Module für das Zielsystem ausgewählt. Folgende Backends stehen zur Verfügung:
- GDI -Backend für Microsoft Windows .
- DirectX- Back-End; älteres SDL 1.2 verwendet standardmäßig DirectX 7, während 2.0 standardmäßig DirectX 9 verwendet und auf DirectX 11 zugreifen kann.
- Quartz- Back-End für macOS (verloren in 2.0).
- Metall -Backend für macOS / iOS / tvOS seit 2.0.8; ältere Versionen verwenden standardmäßig OpenGL.
- Xlib - Backend für X11- basiertes Windowing-System auf verschiedenen Betriebssystemen.
- OpenGL- Kontexte auf verschiedenen Plattformen.
- EGL- Back-End bei Verwendung in Verbindung mit einem Wayland-basierten Windowing-System, Raspberry Pi und anderen Systemen.
- Vulkan- Kontexte auf Plattformen, die dies unterstützen.
- sceGu-Backend, ein Sony OpenGL-ähnliches Backend, das für die PSP nativ ist .
SDL 1.2 unterstützt RISC OS (entfällt in 2.0).
Für SDL 1.2 steht ein inoffizielles Sixel - Backend zur Verfügung.
Die Rockbox MP3-Player-Firmware verteilt auch eine Version von SDL 1.2, die zum Ausführen von Spielen wie Quake verwendet wird .
Empfang und Annahme
Im Laufe der Jahre wurde SDL für viele kommerzielle und nichtkommerzielle Videospielprojekte verwendet. Zum Beispiel MobyGames aufgelistet 120 Spiele mit SDL im Jahr 2013 und die SDL Website selbst aufgeführt rund 700 Spiele im Jahr 2012. Wichtige kommerzielle Beispiele sind Angry Birds , Unreal Tournament und Spiele entwickelt mit Ventil ‚s Source - Engine , die für Cross SDL ausgiebig verwendet -Plattformkompatibilität; diejenigen aus der Open-Source-Domain sind OpenTTD , The Battle for Wesnoth oder Freeciv .
Die plattformübergreifenden Spielversionen der beliebten Humble Indie Bundles für Linux, Mac und Android sind oft SDL-basiert.
SDL wird auch häufig für spätere Portierungen auf neuen Plattformen mit Legacy-Code verwendet. So wurde beispielsweise das PC-Spiel Homeworld über SDL auf den Pandora- Handheld und Jagged Alliance 2 für Android portiert .
Außerdem verwenden mehrere Nicht-Videospielprogramme SDL; Beispiele sind Emulatoren wie DOSBox , FUSE ZX Spectrum Emulator und VisualBoyAdvance .
Es wurden mehrere Bücher für die Entwicklung mit SDL geschrieben (siehe weiterführende Literatur).
SDL wird in Universitätskursen verwendet, in denen Multimedia und Informatik unterrichtet werden , beispielsweise in einem Workshop über Spieleprogrammierung mit libSDL an der Universität von Cadiz im Jahr 2010 oder in einer Game Design-Disziplin an der UTFPR (Campus Ponta Grossa) im Jahr 2015.
Beispiele für Videospiele mit SDL
Siehe auch
Verweise
Weiterlesen
- Alberto García Serrano: Programación de videojuegos en SDL , Ediversitas, ISBN 84-95836-08-4 (Spanisch)
- Ernest Pazera: Fokus auf SDL , Muska & Lipman/Premier-Trade, ISBN 1-59200-030-4
- Ron Penton: Data Structures for Game Programmers , Muska & Lipman/Premier-Trade, ISBN 1-931841-94-2 ( Spieleprogrammierungsbeispiele mit SDL )
- John R. Hall: Programming Linux Games , No Starch, ISBN 1-886411-49-2 ( Erstes SDL-Buch, von Loki Games , archivierte Online-Version: PDF at the Wayback Machine (archiviert am 22. Januar 2003), LaTex-Quellen beim Wayback Maschine (archiviert am 14. Februar 2003))
- SDL-Spieleentwicklung von Shaun Mitchell
- SDL-Tutorials
- Spieleentwicklung mit SDL 2.0 auf YouTube – Video vom 11. Februar 2014 von Ryan C. Gordon