有没有关于如何编写在Linux中使用framebuffer设备的软件的文档? 我见过几个简单的例子,基本上说:“打开它,将其映射到映射区域”。 但没有关于如何使用不同的IOCTLS的任何全面的文档。 我已经看到“平移”和其他function的参考,但“使用它”可以让太多的无用信息点击。
编辑:从编程的angular度来看,是唯一的文档,而不是“用户如何configuration您的系统使用fb”文档的代码?
你可以看看fbi的源代码,一个使用linux framebuffer的图片浏览器。 你可以在这里找到它: http : //linux.bytesex.org/fbida/
– 看起来可能没有太多的选项可以用fb从桌面上的用户空间进行编程,超出了你提到的范围。 这可能是为什么一些文档如此之久的原因之一。 请看这个设备驱动程序编写器的使用方法,以及一些官方的linux文档中引用的内容:www.linux-fbdev.org [斜杠] HOWTO [斜杠] index.html。 它没有引用太多的接口..虽然看着Linux的源代码树提供了更大的代码示例。
– opentom.org [斜线] Hardware_Framebuffer不适用于桌面环境。 它强化了主要的方法,但似乎避免解释所有需要做的“快速”双缓冲区切换它所提到的成分。 另一个不同的设备,并留下一些关键的缓冲细节是wiki.gp2x.org [斜线]维基[斜线] Writing_to_the_framebuffer_device,虽然它至少建议你可能会使用fb1和fb0进行双缓冲(在此设备..虽然对于桌面,fb1可能不可能或它可能访问不同的硬件),使用volatile关键字可能是适当的,我们应该注意vsync。
– asm.sourceforge.net [斜线]文章[斜线] fb.html汇编语言例程也出现(?)只是做查询,打开,设置一些基本知识,mmap,绘制像素值的存储,和复制到fb内存(确保使用一个简短的stosb循环,我想,而不是一些更长的方法)。
– 当google搜索Linux帧缓冲区时,要小心16 bpp的注释:我在X会话期间使用了fbgrab和fb2png无济于事。 这些图像都呈现出一个图像,这个图像提示我的桌面屏幕的快照,就好像桌面的图像是用一个非常糟糕的相机在水下拍摄的,然后在黑暗的房间里曝光过度。 图像的颜色,尺寸完全被破坏,并且没有多少细节(全部用不属于像素的颜色点缀)。 看起来,我使用的计算机上的/ proc / sys(从PCLOS衍生产品的最小修改的新内核)声称fb0使用16 bpp,我google搜索的大部分东西都说了一些东西,但实验让我一个非常不同的结论。 除了标准帧缓冲区抓取工具(这个发行版本持有的版本)可能假定有16位的这两个失败的结果之外,我有一个不同的成功的测试结果,将帧缓冲器像素数据处理成32位。 我从通过cat / dev / fb0拉入的数据创建了一个文件。 该文件的大小最终为1920000.然后,我写了一个小型的C程序来尝试和操纵这些数据(假设它是像素数据在某些编码或其他)。 我最终确定了它,像素格式与我在查询时从X获得的格式完全匹配(TrueColor RGB 8位,没有alpha,但填充到32位)。 注意另外一个线索:我的屏幕分辨率是800×600的4个字节就是1920000。 我最初尝试的16位方法都产生了一个类似fbgrap的破碎图像,所以不是我可能没有看到正确的数据。 [让我知道如果你想要我用来测试数据的代码。 基本上我只是在整个fb0 dump中读取数据,然后在添加一个头文件“P6 \ n800 600 \ n255 \ n”后创建合适的ppm文件,然后遍历所有像素来操纵它们的顺序扩展它们,最终成功的结果是我每丢掉一个第四个字节,并在第四个字节单元中切换第一个和第三个。 简而言之,我将明显的BGRA fb0转储转换为ppm RGB文件。 ppm可以在Linux上用许多pic浏览器查看。]
– 您可能想重新考虑使用fb0编程的原因(这也可能解释了为什么只有少数例子存在)。 与X相比,你可能无法获得任何有价值的性能提升(这是我的经验,如果有限的话),同时放弃使用X的好处。这个原因也可能解释为什么只有很少的代码实例存在。
请注意,DirectFB不是fb。 DirectFB最近得到了比老fb更多的爱,因为它更专注于性感的3d hw加速。 如果你想在不使用3D硬件加速(甚至是2d加速)的情况下尽可能快地渲染到桌面屏幕,那么fb可能会很好,但不会给你任何X不给你的东西。 X显然使用fb,开销可能可以忽略不计,相比于其他程序可能会有的成本(不要在任何紧密的循环中调用X,而是在最后一次设置帧的所有像素)。 另一方面,它可以很好地玩弄这个评论中所包含的fb: 通过Linux FrameBuffer将像素绘制到屏幕上
检查MPlayer来源。
在/ libvo目录下有很多Mplayer用来显示多媒体的视频输出插件。 在那里你可以找到使用Linux帧缓冲区的fbdev (vo_fbdev * sources)插件。
有很多的ioctl调用,具有以下代码:
这不像一个很好的文档,但这肯定是一个很好的应用程序实现。
看看任何的源代码:fbxat,fbida,fbterm,fbtv,directFB库,libxineliboutput-fbe,ppmtofb,xserver-fbdev都是debian软件包的应用程序。 只需从debian库中获取源代码。 还有很多其他的…
提示 :使用您最喜欢的包管理器在包描述中搜索framebuffer。
好的,即使读取代码有时也被称为“ Guru文档 ”,实际上可能有点太多了。
任何启动画面的来源(例如启动时)都会给你一个好的开始。