Giovanni's Diary > Subjects > Programming > Gists >
C / sdl_window.c
Create an SDL3 window and poll events.
// SPDX-License-Identifier: MIT // Author: Giovanni Santini // Github: @San7o // Create an SDL3 window and poll events #include <stdio.h> #include <SDL3/SDL_init.h> #include <SDL3/SDL_video.h> #include <SDL3/SDL_error.h> #include <SDL3/SDL_render.h> #include <SDL3/SDL_events.h> #include <SDL3/SDL_keyboard.h> #define WINDOW_NAME "hello world window" #define WINDOW_WIDTH 500 #define WINDOW_HEIGHT 500 #define WINDOW_FLAGS 0 int main(void) { if (!SDL_Init(SDL_INIT_VIDEO)) { fprintf(stderr, "Error initializing SDL: %s\n", SDL_GetError()); return 1; } SDL_Window *window; SDL_Renderer *renderer; SDL_Event event; bool ret = SDL_CreateWindowAndRenderer(WINDOW_NAME, WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_FLAGS, &window, &renderer); if (!ret) { fprintf(stderr, "Error Creating SDL Window: %s\n", SDL_GetError()); return 1; } while(1) { if (SDL_PollEvent(&event)) { if (SDL_EVENT_KEY_DOWN == event.type) { if (event.key.key == 'q' || event.key.key == 0x1b /* ESC */) break; } } SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); if (!SDL_RenderClear(renderer)) { fprintf(stderr, "Error Clearing SDL Window: %s\n", SDL_GetError()); goto cleanup; } SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); // Render frame... if (!SDL_RenderPresent(renderer)) { fprintf(stderr, "Error Rendering SDL Window: %s\n", SDL_GetError()); goto cleanup; } } cleanup: SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); SDL_Quit(); return 0; }