Simple DirectMedia Layer


... [ Seminar: Startseite ] ... [ Interaktive Musik ] ... [ Literaturverzeichnis ] ...

Der Simple DirectMedia Layer (SDL) ist eine Open-Source-Alternative zu DirectX. Schwerpunkt ist hier allerdings nicht der extrem schnelle und direkte Zugriff, sondern die Cross-Plattformkompatibilität mit einer einheitlichen Schnittstelle für den Zugriff auf Grafik- und Soundhardware.

Die folgende Tabelle gibt einen Überblick über die wesentlichen Eigenschaften von SDL.

 

Unterstützte Betriebssysteme

Windows, BeOS, MacOS, MacOS X,Solaris, FreeBSD, IRIX, Linux

Verfügbar für die Programmiersprachen

Ada, C, C++, C#, Eiffel, Erlang, Euphoria, Lisp, Java, Guile, ML, Pascal, Perl, PHP, Python,Ruby

Inhalt

Multimedia-Schnittstelle für Low-Level-Zugriff auf Video Framebuffer, Soundausgabe und Eingabegeräte (Keyboard, Mouse, Joystick). Ist Hardware-Beschleunigung vorhanden, wird diese verwendet.

Hergestellt von

Open Source Project (www.libsdl.org) unter der GNU Lesser General Public License 2, ursprünglich entwickelt von Sam Lantinga, Chefprogrammierer bei Loki Software

Erschienen

Version 0.3 im Oktober 1997,

aktuelle Version 1.2

Programmiert in

C und Assembler,

als 3D API wird OpenGL verwendet,

die Windows-Portierung basiert in einer schnellen Version auf DirectX, in einer langsameren auf den Standard-Windows-GDI

Vorteile ggü. MS DirectX

-Leicht zu lernende API

-Ermöglicht eine einfache Entwicklung von Multimedia-Anwendungen

-Plattformübergreifend

-alle Funktionen werden über eine Bibliothek „SDL.h“ eingebunden

-für nützliche Zusatzfunktionen (z.B. Netzwerkunterstützung, MIDI-Abspielen) gibt es Extrabibliotheken

Nachteile ggü. MS DirectX

bietet noch längst nicht alle Funktionen von DirectX an (kein Audio Input, kein Video Input)

nicht so schnell wie DirectX

Verwendet z.B. in

Linux-Version von Descent3, Civilization: Call To Power, Sim City 3000, Tribes 2 (alle von Loki Software)

 

 

Folgende Tabelle gibt einen noch detailierteren Einblick in SDL auf Betriebssystemebene und speziell die Audiofähigkeiten von SDL:

Thema

Inhaltliche Möglichkeiten mit SDL

Thread-API

Unterstützt Semaphoren, Mutex-Objekte und Condition-Variablen zur Synchronisation

Timer

abgelaufene Zeit abfragen, bestimmte Zeit warten, 10 ms Zeitgeber

Ereignisse

Änderung der Sichtbarkeit des Programms

 

Tastatur- und Mauseingaben

 

Jedes Ereignis kann mit SDL_EventState() einzeln ermöglicht oder verhindert werden

 

die Ereignisse werden durch eine vom Benutzer spezifizierte Filterfunktion geleitet, bevor sie in die interne Ereignise-Queue eingereiht werden

 

die Ereignis-Queue ist Thread-sicher

Audio

Abspielen von 8/16-Bit-Sounds (ggf. automatische Wandlung des Formats)

 

Ein separater Thread spielt Audio ab

 

Der Puffer wird über ein Callback gefüllt

 

Eigene Audiomixer können verwendet werden

 

Umfangreiche Audiobibliotheken vorhanden

 

Folgendes Beispielprogramm zeigt wie mit wenig Code das Erzeugen eines Fensters und einer Endlosschleife, die Events verarbeitet, cross-plattformkompatibel mit SDL möglich ist.

 

#include "SDL.h"
int main( int argc, char* argv[] )
{
  //initialize systems
  SDL_Init ( SDL_INIT_VIDEO );
 
  //set our at exit function
  atexit ( SDL_Quit );
 
  //create a window
  SDL_Surface* pSurface = SDL_SetVideoMode (512 ,384 ,0,SDL_ANYFORMAT);
 
  //declare event variable
  SDL_Event event;
 
  //message pump
  for ( ; ; )
  {
    //look for an event
    if ( SDL_PollEvent ( &event ) )
    {
      //an event was found
      if ( event.type == SDL_QUIT ) break ;
    }
  }//end of message pump
  //done
  return ( 0 ) ;
}

 


... [ Seminar: Startseite ] ... [ Interaktive Musik ] ... [ Simple DirectMedia Layer ] ... [ Literaturverzeichnis ] ...