framebuffer问题

发布于 2022-10-15 05:05:49 字数 2209 浏览 19 评论 0

  1. for (y = 100; y < 300; y++)
  2.          for (x = 100; x < 300; x++) {
  3.              location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) +
  4.                         (y+vinfo.yoffset) * finfo.line_length;
  5.              if (vinfo.bits_per_pixel == 32) {
  6.                  *(fbp + location) = 100;        // Some blue
  7.                  *(fbp + location + 1) = 15+(x-100)/2;     // A little green
  8.                  *(fbp + location + 2) = 200-(y-100)/5;    // A lot of red
  9.                  *(fbp + location + 3) = 0;      // No transparency
  10.              } else  { //assume 16bpp
  11.                  int b = 10;
  12.                  int g = (x-100)/6;     // A little green
  13.                  int r = 31-(y-100)/16;    // A lot of red
  14.                  unsigned short int t = r<<11 | g << 5 | b;
  15.                  *((unsigned short int*)(fbp + location)) = t;
  16.              }
  17.          }

复制代码这个是网上遍地都是framebuffer的测试程序的一小段,想问一下location是什么,x,y又是什么,可见解析度xres,yres与虚拟解析度xres_virtual,yres_virtual都是什么,是什么关系。xres与xres_virtual,xoffset之间有公式关系吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

居里长安 2022-10-22 05:05:49

framebuffer的大概思想明白了,估计上面应该能看得明白。
x,y对应着屏幕上的坐标,而这些坐标与内存的地址又是一一对应的。
后面那些好像与屏幕特性有关了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文