La libreria multipiattaforma SDL ( Simple DirectMedia Layer ) è nata da parte di LokiGames per fare il porting dei videogiochi Windows anche su Linux, ma grazie ad altri programmatori è diventata disponibile per Windows, BeOS, MacOS e tanti altri. I pregi maggiori di questa libreria sono la portabilità e la composizione di vari moduli, anche esterni fatti da altri programmatori, tutti dediti alla creazione di un’applicazione multimediale come un videogioco. Per compilare i programmi scritti con la libreria SDL è necessario scaricare i pacchetti direttamente dalla propria distribuzione Linux ( in Ubuntu libsdlx.x-dev, metodo consigliato ), oppure è possibile reperirli anche per le altre piattaforme sul sito ufficiale di SDL; ecco i moduli base nei quali è suddivisa la libreria:
A questi è possibile affiancare altre librerie per svolgere altri compiti come ad esempio per la gestione della rete o delle immagini. Per quanto concerne la grafica 3D, SDL permette di creare un contesto utilizzabile in OpenGL.
Al momento dell’inizializzazione è possibile attivare soltanto i moduli necessari oppure demandare ad altre librerie altri compiti, utilizzare FMOD per le funzioni audio ed SDL per la grafica ad esempio. La funzione che consente l’inizializzazione della libreria si chiama SDL_Init(), che accetta come unico parametro un insieme di flag unibili tramite OR, la funzione allora restituirà 0 ( zero ) in caso di successo, altrimenti -1.
Ricordo che questa funzione deve essere invocata prima di ogni altra chiamata alla libreria ed al termine va chiusa con SDL_Quit(), in modo da liberare le risorse occupate. La libreria SDL permette anche di aggiungere o eliminare determinati sistemi tramite la funzione SDL_InitSubSystem() e SDL_QuitSubSystem(), funzioni che accettano gli stessi flag di SDL_Init(). Ogni volta che si richiama una funzione è bene sempre controllare il valore restituito in modo da rilevare possibili errori, mentre tramite la funzione SDL_GetError() si può conoscere l’errore attraverso un indirizzo alla stringa contenente appunto l’errore verificatosi in formato testuale. Vediamo quindi un piccolo esempio di codice per inizializzare la libreria ed utilizzare alcuni moduli, il tutto in ambiente Linux con il compilatore GCC.
/* File: test_sdl.c compilare con: gcc -o test_sdl test_sdl.c $(sdl-config --libs --cflags) */ #include <stdio.h> #include <SDL.h> int main(int argc, char** argv) { int iRet = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO); if (iRet == -1) { fprintf(stderr, "ERRORE: %s", SDL_GetError()); return -1; } // Ora dobbiamo utilizzare anche il joystick iRet = SDL_InitSubSystem(SDL_INIT_JOYSTICK); if (iRet == -1) { fprintf(stderr, "ERRORE: %s", SDL_GetError()); return -1; } // Ora non serve più l'audio ed il joystick SDL_QuitSubSystem(SDL_INIT_JOYSTICK|SDL_INIT_AUDIO); SDL_Quit(); return 0; }
In questo articolo abbiamo introdotto la programmazione attraverso la libreria SDL per creare applicazioni multimediali, per ora termino qui, ma in futuro tratteremo della gestione del video, quindi continuate a seguirmi.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→