Gebruik framebuffer onder linux

Pagina: 1
Acties:

  • nassor
  • Registratie: April 2003
  • Laatst online: 21-05-2024
Voor een project moet ik direct naar de framebuffer ( /dev/fb ) in linux schrijven. Ik zal tekst en een grafiek op het scherm moeten tonen. Nou is het mij alleen niet duidelijk hoe ik dit voor mekaar moet krijgen. Tot nu toe heb ik de onderstaande code dat de hele scherm een kleurtje geeft. Ik heb lang gezocht, maar kan geen tutorial (of iets dergelijks) vinden waarmee ik verder kom. Er bestaat niet de mogelijkheid om bijv. gtk (of dergelijke) te gebruiken. Ik moet direct de framebuffer manipuleren.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Read in header files
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/ioctl.h>

main ()
{
  int row, column;
// open framebuffer device and read out info
  int fd = open ("/dev/fb0", O_RDWR);
  struct fb_var_screeninfo screeninfo;
  ioctl (fd, FBIOGET_VSCREENINFO, &screeninfo);

// continue only if 8 bit colour depth
  if (screeninfo.bits_per_pixel == 8)
    {

// determine size
      int width = screeninfo.xres;
      int height = screeninfo.yres;

// embed framebuffer into memory
      unsigned char *data = (unsigned char *) mmap (0, width * height,
                            PROT_READ | PROT_WRITE,
                            MAP_SHARED, fd, 0);

// process screen content line by line
      for (row = 0; row < height; row++)
    {
      for (column = 0; column < width; column++)
        {
          data[column + row * width] = 0x02;
        };
    };

// mask framebuffer out of memory
      munmap (data, width * height);
    };
};

If an experiment works, something has gone wrong


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:25

Creepy

Tactical Espionage Splatterer

Je tekent nu in principe pixel voor pixel op het scherm. Dan is het toch redelijk eenvoudig om hier ook lijnen en tekst op te zetten lijkt me?

Daarnaast is er nog DirectFB. Een kleine lib om direct op de framebuffer te kunnen tekenen: http://www.directfb.org/index.php?path=Main. Er is zelfs GTK+ en OpenGL ondersteuning voor.
DirectFB is a thin library that provides developers with hardware graphics acceleration, input device handling and abstraction, integrated windowing system with support for translucent windows and multiple display layers on top of the Linux Framebuffer Device

[ Voor 29% gewijzigd door Creepy op 01-12-2006 13:06 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • ATS
  • Registratie: September 2001
  • Laatst online: 28-11 20:56

ATS

Een paar dagen geleden heb ik op dit forum net zoiets voorbij zien komen, met daarin diverse tips. Het heette iets van "Grafisch programmeren voor Linux" of iets dergelijks. Zoek die even op. Daar staan ook wat hints in voor diverse libs die je kunnen helpen zonder dat je X nodig hebt. Zelf fontjes gaan tekenen lijkt me niet grappig...

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant