0

フレームバッファにアクセスするために ioctl 関数を使用しています
問題は、フレームごとにフレームバッファを 3 回書き込んでいることです
。青い。
つまり、各フレームに 3 つのレイヤーがあり、赤が下、緑、青が上になります。したがって、赤と緑は見えず、青しか見えません。
さて、私の質問は、ioctl 呼び出しを使用すると、赤と緑を認識できず、青だけを認識できるように見えるということです。
フレームごとに、次のようなことを行いました。

Red(); //Frame buffer will be all Red
getFrameBuffer(); // ioctl call
Green();
Blue();

そして、私の getFrameBuffer() は次のようなものです:

int fd = open("/dev/fb0",O_RDWR);
if (fd == -1)
   printf("Could not open framebuffer\n");
struct fb_var_screeninfo screen_info;
struct fb_fix_screeninfo fixed_info;
if (ioctl(fd, FBIOGET_FSCREENINFO, &fixed_info))
   printf("Error reading fixed information.\n");
if (ioctl(fd, FBIOGET_VSCREENINFO, &screen_info))
   printf("Could not read variable screen info.\n");
size_t screensize = fixed_info.line_length*screen_info.yres;
unsigned char *fbp = (unsigned char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if ((int)fbp == -1)
   printf("Cannot mapped\n");
munmap(fbp,screensize);

これまでのところ、getFrameBuffer() を呼び出すと、すべて青色が返されます。フレームバッファなどの書き込みをブロックして、 getFrameBuffer() を呼び出したときに赤色が得られるようにする方法はありますか?

4

0 に答える 0