diff options
Diffstat (limited to 'sdltest1/sdltest.c')
-rw-r--r-- | sdltest1/sdltest.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/sdltest1/sdltest.c b/sdltest1/sdltest.c new file mode 100644 index 0000000..b084892 --- /dev/null +++ b/sdltest1/sdltest.c @@ -0,0 +1,79 @@ +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> +#include <stdbool.h> +#include <string.h> +#include <limits.h> +#include <SDL2/SDL.h> +#include <SDL2/SDL_bits.h> +#include <SDL2/SDL_error.h> +#include <SDL2/SDL_video.h> +#include <SDL2/SDL_render.h> +#include <SDL2/SDL_surface.h> +#include <SDL2/SDL_mouse.h> +#include <SDL2/SDL_keyboard.h> + +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; +} |