我是一位专注于故障和错误的艺术家,我目前正在尝试找到一种方法来创建这样的图像这这些是通过截取当前 vram 中的屏幕截图而得到的。在 Linux/Ubuntu 中可以做到这一点吗?如果可以,怎么做?
答案1
转储 VRAM 内容不应该从用户空间进行。它需要内核驱动程序的支持。如果你很幸运,你的驱动程序可能包含转储内存的触发器,但它们可能仅在你编译某些调试选项时才可用。
答案2
我注意到我的机器上有一个有趣的故障,它产生了美观的故障艺术效果,尽管它不像原始 VRAM 捕获那样直接或有用。
我使用 gnome-mplayer(尽管任何 mplayer 衍生软件都可以),并带有用于(相对较新的)nvidia 图形硬件的 vdpau 硬件加速视频输出模块。我必须从 10.04 的 PPA 中获取支持 vdpau 的 mplayer 版本,但我认为它在 10.10 中开箱即用。
当您在视频暂停的情况下进入或退出全屏模式时,就会出现故障。窗口会充满精彩的垃圾,随机的碎片,包括最近在视频内存中的内容:视频、UI 碎片、3D 图形(如果您正在玩游戏)。无论窗口大小如何,它都会被转储到其中。
一旦开始播放视频,它就会消失,因为窗口的内容会不断刷新。但我截取了几张屏幕截图,记录了它执行某些特别有趣的操作时的情况。
我不是图形编程专家,但编写一个 OpenGL 程序似乎相当简单,该程序使用(误)指针从视频内存中获取一堆垃圾,然后将其渲染到屏幕或磁盘上的图像。
如果您愿意的话,我可以找出一些我回家后捕获的例子。