Simple DirectMedia Layer: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
infobox, storia, link
storia, architettura, portabilità, note
Riga 15:
|Generi = [[Application Programming Interface|API]]
|Genere =
|Licenza = 1.2 [[GNU Lesser General Public License|GNU LGPL]] v./ 2.0 [[Zlib license]]
|SoftwareLibero = sì
|Lingua =
Riga 24:
 
== Storia ==
[[Sam Lantinga]] ha creato la libreria, rilasciandola inizialmente agli inizi del 1998, mentre lavorava per la [[Loki Software]]. Gli venne l'idea mentre stava portando una un'applicazione da Windows a Macintosh. Ha poi utilizzato SDL per portare ''[[Doom]]'' in [[BeOS]] (vedi [[Doom source port]]). Parecchie altre librerie libere sembranosono lavorarestate 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.<ref>{{cite web |title=Exploring the Galaxy | url=http://slouken.blogspot.com/2011/04/exploring-galaxy.html | date=6 aprile 2011 | accessdate=16 luglio 2012}}</ref>
 
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.<ref>{{cite web |url=http://wiki.libsdl.org/moin.cgi/Roadmap |title=SDL 2.0 Roadmap |accessdate=25 luglio 2012}}</ref> 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<ref>{{cite web | url=http://www.libsdl.org/license.php | title=Licensing the Simple DirectMedia Layer library | accessdate=16 luglio 2012}}</ref>
 
== Architettura ==
La libreria ha collegamenti con quasi ogni linguaggio di programmazione esistente, dal popolare [[C++]], [[Perl]], [[Python]] (attraverso [[pygame]]), [[Pascal (linguaggio)|Pascal]] ai meno conosciuti come il [[Euphoria (Linguaggio di programmazione)|Euphoria]] o il [[Pliant]]. Questo, e il fatto che è licenziato sotto la [[LGPL]], fa di SDL una scelta comune per molte applicazioni multimediali.
 
SDL stesso è 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.
È spesso usata come complemento alle [[OpenGL]] settando l'output grafico e fornendo la gestione dell'input del mouse e della tastiera, 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 TimerTime. 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
Line 39 ⟶ 41:
* ''SDL_rtf'' - Renderizzazione semplice del [[Rich Text Format]]
 
== ArchitetturaPortabilità ==
[[Immagine:SDL Layers.svg|thumb|250px|Livelli di astrazione persu parecchiediverse piattaforme SDL.]]
SDL ha la parola "layer" nel suo titolonome perché è veramente un wrapperlivello di collegamento attraversoa funzionalità specifiche per i sistemi operativi. Lo scopo principale di SDL è di fornire un framework comune per accedere a queste funzionalità.
 
Per come è progettatostata SDLconcepita l'architettura, ilgran parte del codice sorgente di SDL è suddiviso in moduli separati per ogni sistema operativo, per poter fare chiamate al sistema operativo sottostante.; Quandoquando SDL è compilato, i moduli corretti sono selezionati per il giusto sistema operativo di destinazione.
SDL ha la parola "layer" nel suo titolo perché è veramente un wrapper attraverso funzionalità specifiche per i sistemi operativi. Lo scopo principale di SDL è di fornire un framework comune per accedere a queste funzionalità.
 
SuSotto [[Microsoft Windows]], SDL fornisce undi wrapdefault perun lecollegamento all'intefaccia [[DirectXGraphics Device Interface|GDI]],; cheè aanche loro volta sonodisponibile un wrappercollegamento alalle driverlibrerie video[[DirectX]]. Le vecchie versioni di SDL utilizzavano le DirectX 5, ma SDL 1.2 (la release stabile corrente) richiede le DirectX 7 di default. Sam Lantinga ha iniziatodichiarato i pianiche perintende utilizzare le DirectX 8 nelle future release di SDL.<ref>{{cite [web|url=http://wwwlists.libsdl.org/pipermail/sdl-libsdl.org/2000-December/032521013908.html] |title=SDL mailing list |publisher=Libsdl.org |accessdate=16 luglio 2012}}</ref>
Per come è progettato SDL, il codice sorgente è suddiviso in moduli separati per ogni sistema operativo, per poter fare chiamate al sistema operativo sottostante. Quando SDL è compilato, i moduli corretti sono selezionati per il giusto sistema operativo.
 
Sulle piattaforme [[X Window System|X11]], incluso [[Linux]], SDL usa le [[Xlib]] per comunicare con il sistema X11 per la grafica e gli eventi grafici.
Su [[Microsoft Windows]], SDL fornisce un wrap per le [[DirectX]], che a loro volta sono un wrapper al driver video. Le vecchie versioni di SDL utilizzavano le DirectX 5, ma SDL 1.2 (la release stabile corrente) richiede le DirectX 7 di default. Sam Lantinga ha iniziato i piani per utilizzare le DirectX 8 nelle future release di SDL [http://www.libsdl.org/pipermail/sdl/2000-December/032521.html].
 
Sulle piattaforme [[X Window System|X11]], incluso [[Linux]], SDL usa le [[Xlib]] per comunicare con il sistema X11 per gli eventi grafici.
 
Su [[Mac OS X]], SDL usa [[Quartz]].
 
== Sottosistemi e sintassi ==
La sintassi di SDL si basa sullesu funzioni,: tutte le operazioni fatte in SDL vengono eseguite passando parametri allea funzioni. LeStrutture infrastrutturedi dati speciali sono usate anche per immagazzinare le informazioni specifiche che SDL ha bisogno diper usarefunzionare. Ci sono pochialcuni sottosistemi SDLsotto differentii perquali caratterizzareSDL carategorizza le sue funzioni sotto:
 
* 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 TimerTime
* Il sottosistema Joystick
* Il sottosistema CD-ROM
Line 75 ⟶ 76:
== Altri progetti ==
{{interprogetto|commons=Category:Simple DirectMedia Layer}}
 
== Note ==
<references/>
 
== Collegamenti esterni ==