2eb72b26e4
The software rasterizer is to be used with raw framebuffer devices, where no GPU or X11 is available. The demo emulates a raw framebuffer on X11 using XShmImage / XImage. Features implemented: * Drawing primitives * Drawing polygons (using Darel Rex Finley algorithm) * Drawing arcs and circles (using Bresenham's elipses algorithm) * Drawing images using nearest filtering * Bounds check on every operation * Fastpath for lines * Font rendering using nearest filtering * Window resize * Thread safe implementation by using a context * Fixed lower and upper scissors on fast-path * Adapted coding style to nuklear's style * Implemented text scissors Color formats: Define one of them at compile time. * RAWFB_RGBX_8888 (32bpp) * RAWFB_XRGB_8888 (32bpp) Tested: The library has been tested on Lenovo Thinkpad T500 and is able to render more than 30fps on a single core with no further optimizations and VSNYC enabled. TODO: * Improve font rendering by using filters. * Account font foreground color. Usage: The raw framebuffer library needs a "texture" that holds the prerendered font data. The texture is used at runtime to blit the letters onto screen. You have to provide the framebuffer address, dimension and pitch. Signed-off-by: Patrick Rudolph <siro@das-labor.org>
14 lines
270 B
Makefile
14 lines
270 B
Makefile
# Install
|
|
BIN = zahnrad
|
|
|
|
# Flags
|
|
CFLAGS = -std=c89 -pedantic -O2 -Wunused -DRAWFB_XRGB_8888
|
|
|
|
SRC = main.c
|
|
OBJ = $(SRC:.c=.o)
|
|
|
|
$(BIN):
|
|
@mkdir -p bin
|
|
rm -f bin/$(BIN) $(OBJS)
|
|
$(CC) $(SRC) $(CFLAGS) -D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L -o bin/$(BIN) -lX11 -lXext -lm
|