ininial commit

This commit is contained in:
2026-10-04 10:11:22 +02:00
commit 1fe344817e
3 changed files with 100 additions and 0 deletions
+13
View File
@@ -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
Executable
BIN
View File
Binary file not shown.
+87
View File
@@ -0,0 +1,87 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_events.h>
#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;
}