我可以在Linux下直接将字节写入视频内存,还是有更好的方法将数据输入屏幕?

时间:2013-07-15 00:37:32

标签: c graphics framebuffer

我正在教我的儿子编程“正确/艰难”,所以我们从C开始,就像真正的男人一样:)

将文本打印到控制台很有趣,但我仍然记得将我的旧i386切换到320x200x256模式并绘制几个彩色矩形的兴奋......当天就像调用int 10h一样简单然后你只需将字节写入[A000:0000]以在屏幕上绘制像素。

然而,对于现代Linux,这种对硬件的低级访问似乎更复杂(出于显而易见的原因)。我简要地查看了mmap - /dev/fd0所描述的here - 结果是我的Ubuntu 13.04上没有/dev/fb0设备。我还查看了使用svgalib - 但是,他们的示例代码在我的显示器上没有显示任何内容。

所以问题是:在现代Linux中是否有简单的方法可以直接访问视频内存,而不需要太多的系统配置和样板代码?它不一定是全屏访问 - 只要通过将数据直接写入内存就可以打开一个X窗口并绘制像素就可以了。

1 个答案:

答案 0 :(得分:12)

不要直接访问屏幕内存(这比人们可以相信的更多陷阱),你应该考虑使用Simple DirectMedia Layer作为你的图形(以及更多!)并让操作系统处理它来绘制它屏幕。