Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida SDL - La prima dialog

Guida SDL

Capitolo 4° - La prima dialog

<< Precedente Prossimo >>
La prima dialog



La prima cosa da imparare è l'inizializzazione video. Una delle comodità di questa libreria è la semplicità delle operazioni necessarie alla creazione di una dialog.



Inizializzazione:
per utilizzare la libreria è necessario inizializzare i sottoinsiemi interessati (SDL_INIT_VIDEO, SDL_INIT_AUDIO, SDL_INIT_CDROM, SDL_INIT_TIMER) tramite la funzione SDL_Init(FLAGS). Al termine dell'applicazione è necessario chiamare la funzione SDL_Quit() per terminare questi sottosistemi; un metodo alternativo per la chiusura è la funzione atexit(SDL_Quit), solitamente posta subito dopo l'inizializzazione, per chi ha paura di dimenticarsi la chiamata alla funzione di chiusura. In questo caso, però, nel main si dovrà utilizzare l'exit().

Subito dopo possiamo inizializzare la finestra. In un'applicazione multipiattaforma non si può prendere nessuna decisione a priori; è necessario, invece, gestire il software in relazione alle possibilità hardware della macchina e al sistema operativo. A questo proposito la libreria SDL mette a disposizione una serie di funzioni per ottenere informazioni riguardanti i driver video (SDL_GetVideoInfo()) e le potenzialità dell'hardware video (SDL_GetVideoInfo()). Non mi soffermo però su questo; vediamo invece i passi base per la creazione di una dialog:



SDL_Surface *screen;

screen = SDL_SetVideoMode( x, y, bits, Flags );



if(! screen ) return -1;  // gestione del possible errore



SDL_LockSurface(screen);



SDL_Surface ->questo sarà d'ora in poi il tipo fondamentale, infatti è questo che contiene le informazioni relative a un'immagine. Non si deve però confondere questo tipo con la dialog, la quale viene "collegata" ad una variabile di questo tipo; infatti molto spesso si caricano immagini non visualizzate completamente o del tutto, cosa che avremo modo di approfondire con gli sprite.



SDL_SetVideoMode( int x, int y, int bits, int Flags ) ->
questa è appunto la funzione che alloca la nuova SDL_Surface e crea una nuova Dialog a essa riferita.

   x - larghezza della superficie

   y - altezza della superficie

   bits - numero bit di colori

   Flags - SDL_OPENGL | SDL_FULLSCREEN | SDL_DOUBLEBUF | ...



SDL_LockSurface -> si rende utile quando si inizia lo sviluppo di funzioni più complesse; il suo scopo è quello di bloccare eventuali operazioni di scrittura non desiderate, che potrebbero causare errori.

Piccolo fastidio: per ogni blocco di operazioni di disegno (blit)  sarà necessario sbloccare e poi riboccare la superficie, con appunto SDL_UnlockSurface(SDL_Surface*) e SDL_LockSurface(SDL_Surface*)





Se si intende caricare un'immagine la superficie si adatterà al formato della stessa;

al contrario è necessario definirne i parametri base se la propria intenzione è di colorare "manualmente" l'immagine, o comunque senza appoggiarsi a file esterni.



PrimaryLayer = SDL_CreateRGBSurface( (Flags & SDL_HWSURFACE), x, y, bits,

screen->format->Rmask,

screen->format->Gmask,

screen->format->Bmask,

screen->format->Amask

);

if(! PrimaryLayer ) return -1; // gestione del possible errore

<< Precedente Prossimo >>
A proposito dell'autore

Laurea in Ingegneria Informatica. Conosco i linguaggi C/C++, Java, Delphi, jsp e servlet, php, SQL,Bash,R,Matlab; mi sono interessato di: librerie SDL e OpenGL, Ogre3D e Ode, MFC e CLR, winsock. Conoscenza base di: VB, Assembly. Ottenuti i certificati CCNA 1,2,3,4° semestre.