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

Ser*_*gey 16 c graphics framebuffer

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

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

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

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

Ign*_*ams 12

而不是直接访问屏幕内存(这比人们可以相信的更多陷阱),您应该考虑使用Simple DirectMedia Layer来显示图形(以及更多!)并让操作系统处理它将其绘制到屏幕上.

  • 对于基础知识,了解什么是视频内存以及它在基本级别的工作方式非常重要.SDL(特别是SDL2)增加了对于启动器来说太胖的抽象层. (4认同)