Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "main.h"
- namespace fs = std::experimental::filesystem;
- int initProg(SDL_Window *&window, SDL_Renderer *&renderer); // starts sdl2, creates main window & renderer
- const char* WINDOW_TITLE = "Testing";
- int main(){
- SDL_Window* gWindow = NULL;
- SDL_Renderer* gRenderer = NULL;
- if (initProg(gWindow, gRenderer) != 0){
- return 1;
- }
- atexit(SDL_Quit);
- std::string imagePath = fs::current_path() / "assets/hello.png";
- SDL_Texture* helloImage = loadImage(imagePath, gRenderer);
- SDL_Event e;
- while(1){ // main loop
- 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
- if (e.type == SDL_QUIT){
- cleanupSDL(helloImage, gRenderer, gWindow);
- return 0;
- }
- }
- SDL_RenderClear(gRenderer); // flushes screen
- renderSDLTexture(helloImage, gRenderer, 10, 10);
- SDL_RenderPresent(gRenderer); // updates screen
- }
- }
- int initProg(SDL_Window *&window, SDL_Renderer *&renderer){
- if (SDL_Init(SDL_INIT_VIDEO) < 0){
- logSDLError(std::cout, "Init");
- return 1;
- }
- 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.
- std::cout << "IMG_Init error: " << IMG_GetError() << std::endl;
- return 1;
- }
- atexit(IMG_Quit);
- window = SDL_CreateWindow(WINDOW_TITLE, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
- if (!window){
- logSDLError(std::cout, "CreateWindow");
- return 1;
- }
- renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); // creates renderer with hardware acceleration & vsync
- if (!renderer){
- logSDLError(std::cout, "CreateRenderer");
- cleanupSDL(window);
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement