Advertisement
Guest User

c++ sdl2 window code

a guest
Sep 11th, 2020
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. #include "main.h"
  2.  
  3. namespace fs = std::experimental::filesystem;
  4.  
  5. int initProg(SDL_Window *&window, SDL_Renderer *&renderer); // starts sdl2, creates main window & renderer
  6.  
  7. const char* WINDOW_TITLE = "Testing";
  8.  
  9. int main(){
  10.     SDL_Window* gWindow = NULL;
  11.     SDL_Renderer* gRenderer = NULL;
  12.     if (initProg(gWindow, gRenderer) != 0){
  13.         return 1;
  14.     }
  15.     atexit(SDL_Quit);
  16.  
  17.     std::string imagePath = fs::current_path() / "assets/hello.png";
  18.     SDL_Texture* helloImage = loadImage(imagePath, gRenderer);
  19.  
  20.     SDL_Event e;
  21.     while(1){ // main loop
  22.         while(SDL_PollEvent(&e) != 0){ // gets latest event in a poll and removes it from said poll. returns 0 if there are no events in poll
  23.             if (e.type == SDL_QUIT){
  24.                 cleanupSDL(helloImage, gRenderer, gWindow);
  25.                 return 0;
  26.             }
  27.         }
  28.         SDL_RenderClear(gRenderer); // flushes screen
  29.         renderSDLTexture(helloImage, gRenderer, 10, 10);
  30.         SDL_RenderPresent(gRenderer); // updates screen
  31.     }
  32. }
  33.  
  34. int initProg(SDL_Window *&window, SDL_Renderer *&renderer){
  35.     if (SDL_Init(SDL_INIT_VIDEO) < 0){
  36.         logSDLError(std::cout, "Init");
  37.         return 1;
  38.     }
  39.  
  40.     if ((IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG) != IMG_INIT_PNG){ // IMG_Init returns a bitmask of the initialized format loaders, we bitwise AND it and check if png was loaded.
  41.         std::cout << "IMG_Init error: " << IMG_GetError() << std::endl;
  42.         return 1;
  43.     }
  44.     atexit(IMG_Quit);
  45.  
  46.     window = SDL_CreateWindow(WINDOW_TITLE, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
  47.     if (!window){
  48.         logSDLError(std::cout, "CreateWindow");
  49.         return 1;
  50.     }
  51.  
  52.     renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); // creates renderer with hardware acceleration & vsync
  53.     if (!renderer){
  54.         logSDLError(std::cout, "CreateRenderer");
  55.         cleanupSDL(window);
  56.         return 1;
  57.     }
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement