Страница 1 из 1

Как работать c framebuffer в MountainOS?

Добавлено: 09 янв 2025, 21:46
kvassock
Привет! Можете, пожалуйста, дать пример кода для работы с framebuffer в языке Си?

Re: Как работать c framebuffer в MountainOS?

Добавлено: 09 янв 2025, 21:53
Moderator

Код: Выделить всё

#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);
}