Oppure

Loading
Reblitting: muovere un'immagine su uno sfondo statico



Con l'esigenza di uno sfondo caricato da una BMP sorgono le prime difficoltà.

Per poter muovere la nostra immagine su uno sfondo statico è necessario, ad ogni ciclo, disegnare prima lo sfondo, poi l'immagine interessata (ricordo che l'UpdateRect deve essere effettuato una sola volta per ogni ciclo, altrimenti si ottengono brutti effetti visivi (1)). Per ora questo è tutto ciò che ci basta sapere; nel prossimo capitolo analizzeremo il problema del rallentamento dell'applicazione, ma prima è necessario sperimentare.



Carichiamo in una nuova superficie la nostra BMP di sfondo;

    SDL_Surface *sfondo;

        sfondo = SDL_LoadBMP( "sfondo1.bmp" );  // NEW



Prima del blit dell'immagine da muovere, nel ciclo di gioco,  ridisegnamo lo sfondo.

Nell'esempio: src==NULL: disegniamo l'intero sfondo

          dst==NULL: lo sfondo verrà disegnato da (0,0)



SDL_BlitSurface(sfondo, NULL, screen, NULL);   // NEW









(1) Le librerie SDL utilizzano automaticamente un algoritmo per sincronizzare l'
UpdateRect con l'aggiornamento fisico dello schermo. Se nel ciclo di gioco ci fossero più aggiornamenti visivi della superficie (SDL_UpdateRect o anche SDL_Flip, nel caso del DOUBLE_BUFFERING) si visualizzerebbero effetti visivi che renderebbero l'applicazione normalmente inutilizzabile.

A cura di: Oligoatria