tungggg

sdl2_renderer

Feb 18th, 2022
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <SDL.h>
  3.  
  4. #undef main
  5. int main()
  6. {
  7.  
  8.     SDL_Window* window = NULL;
  9.     SDL_Renderer* renderer = NULL;
  10.     SDL_Surface* tempSurface = NULL;
  11.     SDL_Texture* texture = NULL;
  12.     SDL_Event mainEvent;
  13.     SDL_Rect sourceRect;
  14.     SDL_Rect desRect;
  15.     bool isRunning = true;
  16.  
  17.     //initializes  the subsystems
  18.     if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
  19.     {
  20.         printf("Unable to initialize SDL %s\n", SDL_GetError());
  21.         return -1;
  22.     }
  23.  
  24.     //Create window
  25.     window = SDL_CreateWindow("Stdio.vn - SDL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 640, SDL_WINDOW_SHOWN);
  26.     if (window == NULL)
  27.     {
  28.         printf("Could not create window %s", SDL_GetError());
  29.         return -1;
  30.     }
  31.  
  32.  
  33.     //create a renderer
  34.     renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
  35.     if (renderer == NULL)
  36.     {
  37.         printf("Could not create render %s", SDL_GetError());
  38.         return -1;
  39.     }
  40.  
  41.     //create a tempSurface
  42.     tempSurface = SDL_LoadBMP("texture_demo.bmp");
  43.     //create a texutre from surface
  44.     texture = SDL_CreateTextureFromSurface(renderer, tempSurface);
  45.     //free surface
  46.     SDL_FreeSurface(tempSurface);
  47.  
  48.  
  49.     SDL_QueryTexture(texture, NULL, NULL, &sourceRect.w, &sourceRect.h);
  50.  
  51.     sourceRect.x = 0;
  52.     sourceRect.y = 0;
  53.     sourceRect.w = sourceRect.w / 2;
  54.     sourceRect.h = sourceRect.h / 2;
  55.  
  56.     desRect.x = 200;
  57.     desRect.y = 200;
  58.     desRect.w = sourceRect.w;
  59.     desRect.h = sourceRect.h;
  60.  
  61.     //set background color
  62.     SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
  63.  
  64.     //main loop
  65.     while (isRunning)
  66.     {
  67.         // clear the window to black
  68.         SDL_RenderClear(renderer);
  69.         //main event
  70.         while (SDL_PollEvent(&mainEvent))
  71.         {
  72.             switch (mainEvent.type)
  73.             {
  74.                 //User - requested quit
  75.                 case SDL_QUIT:
  76.                 {
  77.                     isRunning = false;
  78.                     break;
  79.                 }
  80.                 default:
  81.                 {
  82.                     break;
  83.                 }
  84.             }
  85.         }
  86.  
  87.         // copy a portion of the texture to the current rendering target.
  88.         SDL_RenderCopy(renderer, texture, &sourceRect, NULL);
  89.         //draw to the screen
  90.         SDL_RenderPresent(renderer);
  91.     }
  92.  
  93.     //Destroy a window.
  94.     SDL_DestroyWindow(window);
  95.  
  96.     //Destroy a renderer
  97.     SDL_DestroyRenderer(renderer);
  98.  
  99.     //cleans up all initialized subsystems
  100.     SDL_Quit();
  101.     return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment