SDL

Aus DGL Wiki
Wechseln zu: Navigation, Suche
Hinweis: Dieser Artikel ist noch unvollständig.
(Mehr Informationen/weitere Artikel)

{{{1}}}

Incomplete.jpg

Dieser Artikel deckt bisher nur den nötigsten Teil von SDL ab und soll nicht über den wahren Funktionsumfang von SDL hinwegtäuschen. (Phobeus)

SDL

Info DGL.png Dieses Wiki besitzt eine eigene SDL-Funktionsübersicht mit deutschen Übersetzungen der SDL-Befehlsreferenzen.

Überblick

SDL ist eine Abkürzung und bedeutet Simple DirectMedia Layer. Es ist die OpenSource-Antwort auf DirectX. Bei SDL handelt es sich um eine Bibliothek, die viele Aufgaben, die in der Spieleprogrammierung erledigt werden müssen, ausführt. Dabei sind die Befehle für alle unterstützten Plattformen die gleichen, alles, was plattformabhängig ist wird von SDL „unter der Haube“ erledigt. Das macht es dem Entwickler einfach, seine Anwendung zu vielen Betriebssystemen kompatibel zu machen, ohne mit vielen Kompileranweisungen komplizierten Code zu schreiben. Zu den unterstützten Plattformen zählen zum Beispiel Windows, Linux, MacOS, aber auch XBOX und BSD.

Entstehung

SDL ist ein Projekt von Loki Games, einer Firma, die damit beauftragt wurde kommerzielle Spieletitel nach Linux zu portieren. Einer der wichtigsten Hauptentwickler ist Sam Lantinga, der heute bei Blizzard Entertainment arbeitet.


SDL im Detail

SDL deckt wie erwähnt viele Bereiche der Spieleentwicklung ab. SDL bietet im Kern eine einfach zu verwendende Fensterverwaltung mit Ereignisverarbeitung. Das Fenster kann beliebig genutzt werden, allerdings können, ohne die Plattformunabhängigkeit zu verlieren, keine Controls, also Buttons, ComboBoxes und so weiter, auf dem Fenster platziert werden. Ebenfalls findet sich ein Support für Joysticks, mit dem man einfach die Positionen und den Status der Buttons auslesen kann. Der SDL-Kern bietet auch einen spartanischen Audio-Support, der allerdings durch das Projekt SDL_mixer erweitert und damit deutlich mächtiger wird. Für uns Pascaler eher unwichtig aber für das ursprüngliche Gebiet, C, unerlässlich ist der Support für plattformunabhängiges Multithreading, außerdem bietet es Timerfunktionen, mit denen man in regelmäßigen Abständen Funktionen aufrufen lassen kann. Der mitunter mächtigste Teil sind die RWops, die plattform- und quellenunabhängigen Zugriff auf Daten ermöglicht.

Das Projekt SDL_image ermöglicht das Laden von Texturen und unterstützt eine große Bandbreite von Formaten. Dabei können entweder Dateien auf dem Dateisystem oder RWops als Datenquellen verwendet werden.

SDL_mixer erlaubt wie schon erwähnt die erweiterte Soundausgabe und ist damit ein Ersatz für den DirectX-Teil DirectSound. Dabei sind auch fortgeschrittene Funktionen wie Fading und benutzerdefinierte Effekte integriert.

SDL_ttf kann Fonts laden und auf SDL_surfaces, sozusagen die TBitmaps von SDL, mit den geladenen Fonts Texte in verschiedenen Modi zeichnen. Dabei gibt es drei Modi: 1. Solid, ohne Antialiasing und mit einer 8-Bit Palette. 2. Shaded, ebenfalls mit einer 8-Bit Palette aber mit einem Antialiasing. 3. Blended, der eine 32-Bit Surface mit Alpha-Kanal verwendet und es damit sehr einfach macht, es mit OpenGL über andere Bilder zu Blenden.

Zu guter letzt SDL_net. SDL_net ist eine Art DirectPlay-Ersatz, der den Netzwerkzugriff erlaubt. Dabei werden TCP und UDP sowie Socketgruppen unterstützt, die auch hier eine große Flexibilität erlauben. Es sind allerdings keine Protokolle vorimplementiert.


SDL hat allerdings ein großes Problem: Es kann von Haus aus nur 2D. Alle Zeichenfunktionen sind nur für den 2D-Bereich geeignet. Aber es hat eine Schnittstelle zu OpenGL und kann die Surface mit wenigen Befehlen auf OpenGL vorbereiten. Das andere Problem ist die oben angesprochene Inkompatiblität zu jeglichen Widgets. Das heißt, dass man keine Möglichkeit hat, Controls auf dem einzigen erstellbaren Fenster zu platzieren. Das zeigt wieder, dass SDL den Ursprung in der Spieleentwicklung hat. Wenn man Controls braucht, sollte man entweder sich eine eigene GUI-Komponente für OpenGL schreiben oder auf OpenSource-Lösungen wie z.B. die LCL (Lazarus Component Library) oder GTK umsteigen.

Philosophie

Die Philosophie von SDL ist, wie oben schon recht deutlich klar gemacht, eine möglichst einfache und doch mächtige API bereitzustellen. Wenn man sich mit SDL beschäftigt, wird man schon nach kurzer Zeit einen großen Lerneffekt verspüren, weil alle SDL-Teile einen ähnlichen Aufbau haben. So kommt man auch mit wenigen Anweisungen schnell an sein Ziel. Dank den wenigen Funktionen kann man schnell die wichtigsten Teile der API auswendig lernen und verheddert sich nicht in einem Dschungel von Funktionen.

Wissenswertes

Bekannte Programme

Bekannte Programme die SDL verwenden:

Weiterführende Links