/* mention the SDL2 documentation at http://wiki.libsdl.org/APIByCategory */ #include #include void gui_run(void) { bool quit = false; SDL_Event event; SDL_Window* window; SDL_Renderer* renderer; SDL_Texture* texture; uint32_t* pixels; // init SDL2 and create window SDL_Init(SDL_INIT_VIDEO); window = SDL_CreateWindow("LimoX", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0 ); // output video driver to stderr fprintf(stderr, "SDL2 video driver: %s\n", SDL_GetCurrentVideoDriver()); // create and initialize renderer, texture and pixel buffer renderer = SDL_CreateRenderer(window, -1, 0); texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STATIC, 640, 480); pixels = malloc(sizeof(uint32_t) * 640 * 480); memset(pixels, 255, 640 * 480 * sizeof(uint32_t)); // handle failed window creation if (window == NULL) { fprintf(stderr, "Failed to create SDL2 window!\n"); return; } else { while (!quit) { SDL_UpdateTexture(texture, NULL, pixels, 640 * sizeof(uint32_t)); SDL_WaitEvent(&event); switch (event.type) { case SDL_QUIT: quit = true; break; } SDL_RenderClear(renderer); SDL_RenderCopy(renderer, texture, NULL, NULL); SDL_RenderPresent(renderer); } SDL_DestroyWindow(window); } free(pixels); // TODO this seems to end in memory access errors but ... why? //SDL_DestroyTexture(texture); //SDL_DestroyRenderer(renderer); SDL_Quit(); }