日期:2014-05-16  浏览次数:20776 次

framebuffer相关的问题
情况比较复杂
我需要使用QT、MWT一类的DD来做GUI程序,而DireckFB是输出到FrameBuffer的。
现在这个系统中没有显卡,我需要将输出的结果作为位图,调用客户提供的图像copy   API传递出去,就能现实在屏幕上了。
我知道FrameBuffer是能够读取的,但是我能够选择什么样的时机调用图像copy   API呢?
打个比方,在GUI中按下一次按钮,画面就变化了两次,可是我总不能在down和up时间中各调用一次图像copy   API吧
而且,客户也不希望在GUI应用程序里面调用图像copy   API。
请教,能够在FrameBuffer的驱动中调用图像copy   API么?
或者,有什么好办法?谢谢。



------解决方案--------------------
我们再次来谈谈帧缓冲的事情。
你所提到的copy API的事情不是很明白。但我看懂了两点:
1. 你的系统没有显卡。
2. 你想用FrameBuffer的API来生成Bitmap图像来满足你的需要。
好的,我们先来看看什么是FrameBuffer.按照Linux内核的观点:
“帧缓冲设备为图形硬件提供一个抽象层,它代表一些视频硬件的帧缓冲,并且允许应用软件通过一套编程接口访问图形硬件,所以,应用软件不需要了解底层的细节(比如硬件寄存器)”,“帧缓冲设备通过特定的设备节点来访问,通常位置在: /dev/fb*”

1. 帧缓冲不一定所有的显卡都有,所以你的软件需要考虑不同的视频硬件特性,操作方法也不相同。但兼容某种标准,比如vesa framebuffer.
2. *表示数字,代表第一二三个FrameBuffer设备。
3. 帧缓冲设备是将显卡里的帧缓冲映射到一个设备节点。以方便读,写,搜索等io操作,同时可以进行部分的ioctl。没有显卡,帧缓冲设备节点是不存在的。
4. 他的读写方法也很简单,就向普通的文件读些。ioctl控制它的行为,实际应用最好参考文档和原码,Xwindows的FB服务器就是一个很好的代码来源。这里也有很多资源可用,http://linux-fbdev.sourceforge.net/