Template
ininial commit
This commit is contained in:
@@ -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
Binary file not shown.
+87
@@ -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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user