|
1
3
|
|
2
1
如果你想去“低水平”,有(或曾经是) https://en.wikipedia.org/wiki/Direct_Graphics_Access 在Linux+XFree86(现在称为X.org)上。
您可以将帧缓冲区映射到用户空间,并使用加载/存储在其上绘制,而不是
或者,当您的程序运行在没有X服务器(或像Wayland这样的其他显示服务器)的虚拟控制台上时,有各种库允许或多或少地直接访问视频RAM和视频模式。 https://en.wikipedia.org/wiki/Virtual_console#Interface 提及 DirectFB , DRI , SDL 还有老人 SVGALib . 更改视频模式通常仍需要系统调用,但您可以加载/存储到视频RAM。不同的库处理vsync/double buffering/whatever的方式可能不同。 这并不一定更快或更好:现代图形卡比哑帧缓冲区多得多。他们有可以加速图形操作的GPU硬件,直接存储到视频RAM并没有利用它。 但是如果你真的想直接访问视频RAM,那么这些链接应该是一个很好的起点,可以让它在Linux下的虚拟控制台上的用户空间中实现,希望当你的程序出现错误时,锁定整台机器的风险更小。 (但是,准备好从另一台机器SSH并终止您的进程+chvt。并确保启用magic SysRQ键来终止当前控制台上的所有进程,以及“unRaw”键盘输入。 免责声明:我有 不 个人编写的软件可以做到这一点,但是有一些例子 FBI (framebuffer image viewer) . 我已经使用ssh和/或SysRQ恢复了控制台,但在 使用 但有缺陷的软件和/或驱动程序。 |