[SDL] Program zatrzymuje się podczas konwersji za pomocą SDL_ConvertSurface
Ostatnio zmodyfikowano 2015-07-12 15:00
Fedox9 Temat założony przez niniejszego użytkownika |
[SDL] Program zatrzymuje się podczas konwersji za pomocą SDL_ConvertSurface » 2015-07-12 14:30:10 Dzień Dobry Uczę się SDLa z kursu LazyFoo, aktualnie przerabiam temat 6 http://lazyfoo.net/tutorials/SDL/06_extension_libraries_and_loading_other_image_formats/index2.php Podczas przepisywania programu, zrobiłem coś źle, nie jestem pewien co. Program zatrzymuje się podczas konwersji obrazka za pomocą SDL_ConvertSurface. Mimo kilku porównań z oryginalnym (i działającym) kodem nie znalazłem błędu. #include <SDL.h> #include <SDL_image.h> #include <stdio.h> #include <string>
const int SW = 640; const int SH = 480;
SDL_Surface * surface = NULL; SDL_Surface * pic = NULL; SDL_Window * window = NULL;
bool init() { printf( "2.Jestem w init()" ); bool success = true; if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "Nie mozna zainicjalizowac SDLa \n", SDL_GetError() ); success = false; } else { printf( "3.Zaladowano SDLa\n" ); window = SDL_CreateWindow( "NO ELO", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SW, SH, SDL_WINDOW_SHOWN ); printf( "4.Stworzono okno\n" ); if( window == NULL ) { printf( "Blad podczas tworzenia okna \n", SDL_GetError() ); success = false; } else { printf( "5.Inicjalizuje SDL_Img\n" ); int imgFlags = IMG_INIT_PNG; if( !( IMG_Init( imgFlags ) & imgFlags ) ) { printf( "SDL_img nie moglo zostac zainicalizowane! \n", IMG_GetError() ); success = false; } else { surface = SDL_GetWindowSurface( window ); printf( "6.okno jest na powierzchni \n" ); } } } printf( "7.Wychodze z init \n" ); return success; }
SDL_Surface * loadSurface( std::string path ) { printf( "10.Jestem w loadSurface\n" ); SDL_Surface * optimizedSurface = NULL; SDL_Surface * loadedSurface = IMG_Load( path.c_str() ); printf( "11.png na loaded surface\n" ); if( loadedSurface = NULL ) { printf( "Blad przy ladowaniu obrazka \n", SDL_GetError() ); } else { printf( "11.5.Optymilizuje obarzek" ); optimizedSurface = SDL_ConvertSurface( loadedSurface, surface->format, NULL ); printf( "12.Zomptymalizownao obrazek \n" ); if( optimizedSurface == NULL ) { printf( "Blad przy optimilazcji obrazka \n", SDL_GetError() ); } SDL_FreeSurface( loadedSurface ); printf( "13.Uwolniono loadedSurface \n" ); } printf( "14.Wychodze z loadSurface" ); return optimizedSurface; }
void close() { printf( "24.Jestem w close. To koniec\n" ); SDL_FreeSurface( pic ); pic = NULL; SDL_DestroyWindow( window ); window = NULL; IMG_Quit(); SDL_Quit(); }
bool loadMedia() { printf( "9.Jestem w loadMedia\n" ); bool success = true; pic = loadSurface( "C:/SDL/bin/Debug/dixy.png" ); printf( "15.Zaladowano obrazek\n" ); if( pic == NULL ) { printf( "Nie mozna zaladowac obrazka\n" ); success = false; } printf( "16.Wychodze z loadMedia\n" ); return success; }
int main( int argc, char * args[] ) { printf( "1.Jestem w main\n" ); if( !init() ) { printf( "Blad przy inicjalizacji\n" ); } else { printf( "8.Zainicjalizowano\n" ); if( !loadMedia() ) { printf( "blad przy ladowaniu obrazkow\n" ); } else { SDL_Event e; bool quit; printf( "17.Zainicjalizowano SDL_Event\n" ); while( !quit ) { printf( "18.W glownej petli \n" ); if( SDL_PollEvent( & e ) != 0 ) { printf( "19.W if(SDL_PollEvent(&e) != 0) \n" ); if( e.type = SDL_QUIT ) { quit = true; printf( "23.quit = true;\n" ); } } printf( "20.Blit Surface \n" ); SDL_BlitSurface( pic, NULL, surface, NULL ); printf( "21.Aktualizuje okno \n" ); SDL_UpdateWindowSurface( window ); printf( "22.okno zaaktualizowane \n" ); } } } close(); printf( "26.Zwracam 0(?)" ); return 0; }
1.Jestem w main 2.Jestem w init()3.Zaladowano SDLa 4.Stworzono okno 5.Inicjalizuje SDL_Img 6.okno jest na powierzchni 7.Wychodze z init 8.Zainicjalizowano 9.Jestem w loadMedia 10.Jestem w loadSurface 11.png na loaded surface 11.5.Optymilizuje obarzek
Dziękuję |
|
pekfos |
» 2015-07-12 14:54:09 if( loadedSurface = NULL )
|
|
|
Fedox9 Temat założony przez niniejszego użytkownika |
» 2015-07-12 15:00:44 Rzeczywiście, dzięki. Na drugi raz będę dokładniej sprawdzał tego typu rzeczy. |
|
« 1 » |