#include #include #include #include #include #include #include #include #include #include #include #include #include #include SDL_Window *swin = NULL; SDL_Surface *ssurf = NULL; SDL_Renderer *srender = NULL; SDL_Texture *stex = NULL; SDL_Event s_event; int main( int argc, char *args[] ){ if ( SDL_Init(SDL_INIT_EVERYTHING) != 0 ){ fprintf( stderr, "Error initializing SDL (%s)\n", SDL_GetError() ); return EXIT_FAILURE; } if ( (ssurf = SDL_LoadBMP("./rpl.bmp")) == NULL ){ fprintf( stderr, "Error loading BMP file (%s)\n", SDL_GetError() ); SDL_Quit(); return EXIT_FAILURE; } swin = SDL_CreateWindow( "Test window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE ); if ( swin == NULL ){ fprintf( stderr, "Error creating SDL window (%s)\n", SDL_GetError() ); SDL_DestroyWindow( swin ); memset( ssurf, 0, sizeof(*ssurf) ); SDL_Quit(); return EXIT_FAILURE; } if ( (srender = SDL_CreateRenderer(swin, -1, SDL_RENDERER_ACCELERATED)) == NULL ){ fprintf( stderr, "Error creating renderer (%s)\n", SDL_GetError() ); SDL_DestroyWindow( swin ); memset( ssurf, 0, sizeof(*ssurf) ); SDL_Quit(); return EXIT_FAILURE; } if ( SDL_RenderSetViewport(srender, NULL) != 0 ){ fprintf( stderr, "Error setting viewport (%s)\n", SDL_GetError() ); SDL_DestroyRenderer( srender ); SDL_DestroyWindow( swin ); memset( ssurf, 0, sizeof(*ssurf) ); SDL_Quit(); return EXIT_FAILURE; } if ( (stex = SDL_CreateTextureFromSurface(srender, ssurf)) == NULL ){ fprintf( stderr, "Error creating texture from surface data (%s)\n", SDL_GetError() ); SDL_DestroyRenderer( srender ); SDL_DestroyWindow( swin ); memset( ssurf, 0, sizeof(*ssurf) ); SDL_Quit(); return EXIT_FAILURE; } while ( true ){ if ( SDL_WaitEvent(&s_event) == 1 ){ if ( s_event.type == SDL_QUIT ) break; } if ( SDL_RenderCopy(srender, stex, NULL, NULL) != 0 ) break; SDL_RenderPresent( srender ); } SDL_DestroyTexture( stex ); SDL_DestroyRenderer( srender ); memset( ssurf, 0, sizeof(*ssurf) ); SDL_DestroyWindow( swin ); SDL_Quit(); return EXIT_SUCCESS; }