Как работать c framebuffer в MountainOS?
Как работать c framebuffer в MountainOS?
Привет! Можете, пожалуйста, дать пример кода для работы с framebuffer в языке Си?
Re: Как работать c framebuffer в MountainOS?
Код: Выделить всё
#include "usr/include/stdio.h"
#include "usr/include/sys.h"
typedef struct {
uint32_t width;
uint32_t height;
uint32_t bpp;
uint32_t *buffer;
uint32_t *prerenderBuffer;
} framebuffer_t;
framebuffer_t fb;
void fb_draw_rect(int fd, int x, int y, int w, int h, int color) {
for (size_t l = y; l < h; l++)
{
lseek(fd, ((l*fb.width)+x)*4, SEEK_SET);
for (size_t i = 0; i < w; i++)
{
write(fd, (void*)&color, 4);
}
}
}
int main() {
int fd = open("/dev/fb", O_RDWR);
ioctl(fd, 0x01, &fb);
printf("res %ux%u\n", fb.width, fb.height);
fb_draw_rect(fd, 50, 50, 400, 200, 0xFFFFFF);
close(fd);
exit(123);
}