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
C/C++ - Problema con le SDL
Forum - C/C++ - Problema con le SDL

Avatar
Driverfury (Normal User)
Rookie


Messaggi: 45
Iscritto: 21/09/2011

Segnala al moderatore
Postato alle 16:05
Venerdì, 23/03/2012
Ciao a tutti, sto studiando la libreria SDL. Seguendo la guida su questo sito ho messo su un codice:

Codice sorgente - presumibilmente C/C++

  1. #include "SDL/SDL.h"
  2.  
  3. int main(int argc, char* argv[]) {
  4.     SDL_Init(SDL_INIT_EVERYTHING);
  5.     SDL_Surface* screen;
  6.     SDL_Surface* image;
  7.  
  8.     screen = SDL_SetVideoMode(640, 480, 16, SDL_FULLSCREEN);
  9.  
  10.     image = SDL_LoadBMP("hello.bmp");
  11.  
  12.     SDL_Rect dst;
  13.     dst.x = 20;
  14.     dst.y = 20;
  15.  
  16.     SDL_UnlockSurface(screen);
  17.     SDL_BlitSurface(image, NULL, screen, &dst);
  18.     SDL_LockSurface(screen);
  19.     SDL_UpdateRect(screen, 0, 0, 0, 0);
  20.  
  21.     SDL_Delay(5000);
  22.  
  23.     SDL_Quit();
  24.     return 0;
  25. }



Teoricamente va tutto bene con l'eccezione della visualizzazione dell'immagine (hello.bmp, che è nella stessa directory del progetto). Cos'è che non va nel codice? Aiutatemi per favore. Ringrazio in anticipo.

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1787
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 16:21
Lunedì, 26/03/2012
prova a mettere l'immagine nella cartella che contiene l'exe, non il file di progetto dell'IDE usato.


Software Failure: Guru Meditation
Forum su Informatica, Elettronica, Robotica e Tecnologia: http://www.nonsoloamiga.com
PM Quote
Avatar
alx0 (Member)
Newbie


Messaggi: 1
Iscritto: 22/03/2012

Segnala al moderatore
Postato alle 16:25
Lunedì, 26/03/2012
Devi usare la funzione SDL_Flip , dopo SDL_BlitSurface , per "aggiornare" lo schermo.

Codice sorgente - presumibilmente C++

  1. #include "SDL/SDL.h"
  2.  
  3. int main ( int argc , char* argv[] ) {
  4.  
  5.         SDL_Init( SDL_INIT_EVERYTHING) ;
  6.         SDL_Surface* image ;
  7.         SDL_Surface* screen ;
  8.  
  9.         screen = SDL_SetVideoMode( 640 , 480 , 16 , SDL_SWSURFACE ) ;
  10.  
  11.         image = SDL_LoadBMP( "hello.bmp" ) ;
  12.  
  13.         SDL_Rect dst ;
  14.  
  15.         dst.x = 20 ;
  16.         dst.y = 20 ;
  17.  
  18.         SDL_UnlockSurface( screen ) ;
  19.         SDL_BlitSurface( image , NULL , screen , &dst ) ;
  20.         SDL_Flip( screen ) ;
  21.         SDL_LockSurface( screen ) ;
  22.         SDL_UpdateRect( screen , 0, 0, 0, 0 ) ;
  23.  
  24.         SDL_Delay( 5000 ) ;
  25.  
  26.         return 0 ;
  27.  
  28. }



Così dovrebbe funzionare :k:

PM Quote
Avatar
RiccardoG97 (Member)
Pro


Messaggi: 133
Iscritto: 03/01/2012

Segnala al moderatore
Postato alle 15:51
Venerdì, 20/04/2012
Sicuro di avere messo l'immagine nella cartella dove si trova l'eseguibile? controlla anche che il nome dell'immagine sia uguale a quello scritto nel codice e che l'estensione dell'immagine sia .bmp


"Il sangue ha il sapore del ferro"
PM Quote