Simple DirectMedia Layer
Simple DirectMedia Layer software | |
---|---|
![]() | |
Genere | Libreria software (non in lista) |
Sviluppatore | Sam Lantinga |
Data prima versione | 1998 |
Ultima versione | 2.30.5 (3 luglio 2024) |
Ultima beta | 2.0.0-7635 (13 agosto, 2013) |
Sistema operativo | Multipiattaforma |
Linguaggio | C |
Licenza | 1.2 GNU LGPL / 2.0 Zlib license (licenza libera) |
Sito web | www.libsdl.org/ |
Modifica dati su Wikidata · Manuale |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Linux_kernel_and_OpenGL_video_games.svg/220px-Linux_kernel_and_OpenGL_video_games.svg.png)
Simple DirectMedia Layer (SDL) è una libreria libera multimediale multi piattaforma, scritta in C, che crea un livello astratto al di sopra di varie piattaforme software grafiche e sonore e dunque può controllare video, audio digitale, CD-ROM, suoni, thread, caricamento condiviso di oggetti, timer e networking. Questa astrazione permette ai programmatori di scrivere un'applicazione multimediale una sola volta e farla girare su molti sistemi operativi: la versione corrente supporta ufficialmente Linux, Windows, BeOS, MacOS e macOS, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX e QNX ma il codice sorgente offre il supporto non ufficiale anche per Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64, RISC OS e SymbianOS.
Storia
Sam Lantinga ha creato la libreria, rilasciandola agli inizi del 1998, mentre lavorava per la Loki Software. Gli venne l'idea mentre stava portando un'applicazione da Windows a Macintosh. Ha poi utilizzato SDL per portare Doom in BeOS (vedi Doom source port). Parecchie altre librerie libere sono state sviluppate per funzionare con SDL, quali ad esempio SMPEG e OpenAL. Sam Lantinga ha anche fondato la Galaxy Gameworks nel 2008 per fornire supporto commerciale ad SDL su sistemi iOS; tuttavia la compagnia è stata dismessa dallo stesso Lantinga nel 2011.[1]
SDL 2.0 è un aggiornamento importante al codice di SDL 1.2 e modifica ampie porzioni dell'API. Alcune nuove caratteristiche comprendono il supporto a finestre multiple, il supporto a dispositivi di input multipli (molti mouse, tastiere, ecc...), grafica 2D accelerata, ed un supporto Unicode migliore.[2] SDL 2.0 è distribuita sotto la Zlib license, e quindi liberamente utilizzabile con linking statico in progetti closed-source commerciali, a differenza di SDL 1.2 che invece permette solo il linking dinamico[3].
Architettura
La libreria ha collegamenti con quasi ogni linguaggio di programmazione esistente, dai popolari C++, Perl, Python (attraverso pygame), Pascal ai meno conosciuti Euphoria e Pliant. Questo, e il fatto che è licenziato sotto la LGPL, fa di SDL una scelta comune per molte applicazioni multimediali.
SDL è molto semplice; funziona solamente come un wrapper leggero e multi piattaforma che fornisce il supporto alle operazioni 2D sui pixel, suoni, accesso ai file, gestione degli eventi, temporizzatori, thread e altro. È spesso usata come complemento alle OpenGL settando l'output grafico e fornendo la gestione dei dispositivi di input, funzionalità che sono ben oltre lo scopo delle OpenGL.
La libreria è suddivisa in sottosistemi, quali il Video (gestisce sia le funzioni per le superfici e per l'accesso a OpenGL), l'Audio, il CD-ROM, il Joystick e il Time. A parte il supporto a basso livello, vi sono alcune librerie ufficiali di supporto che forniscono funzionalità addizionali. Queste comprendono le "librerie standard", sono fornite sul sito ufficiale e incluse nella documentazione ufficiale:
- SDL_image - supporto per diversi formati di immagini
- SDL_mixer - funzioni audio complesse, principalmente per il missaggio dei suoni
- SDL_net - supporto alla rete
- SDL_ttf - supporto alla renderizzazione dei Font TrueType
- SDL_rtf - Renderizzazione semplice del Rich Text Format
Portabilità
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/SDL_Layers.svg/220px-SDL_Layers.svg.png)
SDL ha la parola "layer" nel suo nome perché è uno strato di collegamento a funzionalità specifiche dei sistemi operativi. Lo scopo principale di SDL è di fornire un framework comune per accedere a queste funzionalità.
Per come è stata concepita l'architettura, gran parte del codice sorgente di SDL è suddiviso in moduli separati per ogni sistema operativo; quando SDL è compilato, i moduli corretti sono selezionati per il sistema operativo di destinazione.
Sotto Microsoft Windows, SDL fornisce di default un collegamento all'interfaccia GDI; è anche disponibile un collegamento alle librerie DirectX. Le vecchie versioni di SDL utilizzavano le DirectX 5, ma SDL 1.2 (la release stabile corrente) richiede le DirectX 7. Sam Lantinga ha dichiarato che intende utilizzare le DirectX 8 nelle future release di SDL.[4]
Sulle piattaforme X11, incluso Linux, SDL usa Xlib per comunicare con il sistema X11 per la grafica e gli eventi.
Su macOS, SDL usa Quartz.
Sottosistemi e sintassi
La sintassi di SDL si basa su funzioni: tutte le operazioni fatte in SDL vengono eseguite passando parametri a funzioni. Strutture di dati speciali sono usate per immagazzinare le informazioni delle quali SDL ha bisogno per funzionare. Ci sono alcuni sottosistemi sotto i quali SDL categorizza le sue funzioni:
- Il sottosistema Video, eventi e thread - questo fornisce funzionalità per il video, multi-threading, e gestione degli eventi.
- Il sottosistema Audio - questo fornisce le funzionalità audio.
- Il sottosistema Time
- Il sottosistema Joystick
- Il sottosistema CD-ROM
Estensioni
- SMPEG - Libreria player MPEG SDL
- Guichan e ParaGUI - Sets di Widget
- GGI - interfaccia grafica multi platform libera
Note
- ^ Exploring the Galaxy, su slouken.blogspot.com, 6 aprile 2011. URL consultato il 16 luglio 2012.
- ^ SDL 2.0 Roadmap, su wiki.libsdl.org. URL consultato il 25 luglio 2012.
- ^ Licensing the Simple DirectMedia Layer library, su libsdl.org. URL consultato il 16 luglio 2012.
- ^ SDL mailing list, su lists.libsdl.org, Libsdl.org. URL consultato il 16 luglio 2012 (archiviato dall'url originale il 28 marzo 2012).
Voci correlate
Altri progetti
Altri progetti
- Wikimedia Commons
Wikimedia Commons contiene immagini o altri file su Simple DirectMedia Layer
Collegamenti esterni
- La documentazione di SDL, su libsdl.org. URL consultato il 4 maggio 2019 (archiviato dall'url originale il 29 gennaio 2013).
- (EN) SDL sito web ufficiale, su libsdl.org.
- (DE) SDL sito web tedesco, su libsdl.de.
- (EN) DevMaster.net - un sito di sviluppo giochi che ha anche articoli e tutorial su SDL.
- (EN) Il tutorial Wiki per la programmazione dei giochi su SDL, su gpwiki.org. URL consultato il 25 dicembre 2007 (archiviato dall'url originale il 26 ottobre 2007).
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Nuvola_apps_emacs.svg/25px-Nuvola_apps_emacs.svg.png)