From 1fe344817e7589e5a34cbbb0c8a588b84b4a112d Mon Sep 17 00:00:00 2001 From: odweta Date: Sun, 4 Oct 2026 10:11:22 +0200 Subject: [PATCH] ininial commit --- Makefile | 13 ++++++++ build/main | Bin 0 -> 16688 bytes src/main.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 Makefile create mode 100755 build/main create mode 100644 src/main.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fd105d5 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +CC := gcc +LIBS := `pkg-config --libs sdl2` +INC := `pkg-config --cflags sdl2` +SRC := src/main.c +OUT := build/main + +build: $(SRC) + $(CC) -o $(OUT) $< $(INC) $(LIBS) + +run: build + $(OUT) + +.PHONY: build run \ No newline at end of file diff --git a/build/main b/build/main new file mode 100755 index 0000000000000000000000000000000000000000..14b1fc6860a8fd83dcb50b6df0ca7f9e88ffc1f4 GIT binary patch literal 16688 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 sPYv!rUw`oZ0ry>5s%;xCgv8 +#include +#include +#include +#include +#include + +#define WIDTH 320 +#define HEIGHT 200 + +uint32_t framebuffer[WIDTH * HEIGHT]; + +void put_pixel(unsigned int x, unsigned int y, uint32_t color) { + framebuffer[WIDTH * y + x] = color; +} + +int main() { + if (SDL_Init(SDL_INIT_VIDEO) != 0) { + fprintf(stderr, "SDL_Init failed! %s\n", SDL_GetError()); + return EXIT_FAILURE; + } + + SDL_Window *window; + SDL_Renderer *renderer; + SDL_Texture *texture; + SDL_Event event; + bool is_running = true; + + window = SDL_CreateWindow( + "SDL Framebuffer", 0, 0, + WIDTH, HEIGHT, 0 + ); + if (window == NULL) { + fprintf(stderr, "SDL_CreateWindow failed! %s\n", SDL_GetError()); + SDL_Quit(); + return EXIT_FAILURE; + } + + renderer = SDL_CreateRenderer(window, 0, 0); + if (renderer == NULL) { + fprintf(stderr, "SDL_CreateRenderer failed! %s\n", SDL_GetError()); + SDL_DestroyWindow(window); + SDL_Quit(); + return EXIT_FAILURE; + } + + texture = SDL_CreateTexture( + renderer, SDL_PIXELFORMAT_XRGB8888, + SDL_TEXTUREACCESS_STREAMING, + WIDTH, HEIGHT + ); + if (texture == NULL) { + fprintf(stderr, "SDL_CreateTexture failed! %s\n", SDL_GetError()); + SDL_DestroyWindow(window); + SDL_DestroyRenderer(renderer); + SDL_Quit(); + return EXIT_FAILURE; + } + + for (int i = 0; i < 20; i++) { + for (int j = 0; j < 20; j++) { + put_pixel(i, j, 0x00FF00); + } + } + + while (is_running) { + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + is_running = false; + } + } + + SDL_UpdateTexture(texture, NULL, framebuffer, WIDTH * sizeof(uint32_t)); + + SDL_RenderClear(renderer); + SDL_RenderCopy(renderer, texture, NULL, NULL); + SDL_RenderPresent(renderer); + } + + SDL_DestroyTexture(texture); + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + + SDL_Quit(); + + return EXIT_SUCCESS; +} \ No newline at end of file