From 11c7d1bf8eb08d9e48be777c9396516236b0a989 Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Tue, 10 Dec 2024 14:45:16 +0200 Subject: [PATCH] Added the basic sdl window --- .gitignore | 64 +++++++++++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 15 +++++++++++ src/main.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 src/main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56c2344 --- /dev/null +++ b/.gitignore @@ -0,0 +1,64 @@ +# Build directories +build/ +out/ +cmake-build-*/ + +# IDE specific files +.idea/ +.vs/ +.vscode/ +*.swp +*.swo + +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2abc29e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.10) +project(SDLWindow C) + +# Set C99 standard +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) + +# Find SDL2 package +find_package(SDL2 REQUIRED) + +# Add executable +add_executable(${PROJECT_NAME} src/main.c) + +# Link SDL2 +target_link_libraries(${PROJECT_NAME} PRIVATE SDL2::SDL2) \ No newline at end of file diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..8a58fd6 --- /dev/null +++ b/src/main.c @@ -0,0 +1,67 @@ +#include +#include +#include + +#define WINDOW_WIDTH 800 +#define WINDOW_HEIGHT 600 + +int main(int argc, char* argv[]) { + SDL_Window* window = NULL; + SDL_Renderer* renderer = NULL; + bool running = true; + SDL_Event event; + + // Initialise SDL + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + fprintf(stderr, "SDL could not initialise! SDL_Error: %s\n", SDL_GetError()); + return 1; + } + + // Create window + window = SDL_CreateWindow( + "SDL Window", + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + WINDOW_WIDTH, + WINDOW_HEIGHT, + SDL_WINDOW_SHOWN + ); + + if (window == NULL) { + fprintf(stderr, "Window could not be created! SDL_Error: %s\n", SDL_GetError()); + return 1; + } + + // Create renderer + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + if (renderer == NULL) { + fprintf(stderr, "Renderer could not be created! SDL_Error: %s\n", SDL_GetError()); + SDL_DestroyWindow(window); + SDL_Quit(); + return 1; + } + + // Main loop + while (running) { + // Handle events + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + running = false; + } + } + + // Clear screen + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); + SDL_RenderClear(renderer); + + // Present renderer + SDL_RenderPresent(renderer); + } + + // Clean up + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + + return 0; +} \ No newline at end of file