【问题标题】:Use cuda to get screenshot of visible application使用 cuda 获取可见应用程序的屏幕截图
【发布时间】:2017-07-07 07:32:02
【问题描述】:

我是 Nvidia GTX 1060 的所有者。我知道使用 Windows 无法直接访问显卡的视频内存。但我在电子邮件列表的某处读到,可以使用 CUDA API 获取现在在显示器上显示的像素。不幸的是,我没有找到这方面的代码示例。

我想要的是一个类似于位图的数组,其中包含像素的 rgb 值

arr[0] = 255        // red
arr[1] = 255        // green
arr[2] = 0          // blue
arr[3] = 0          // alpha
arr[4] = 255
...

谁能告诉我一个如何用 CUDA 做的例子?

我知道有一种方法可以使用 DirectX 或 openGL。我已经尝试过了,但它要么太复杂,要么太慢,不能同时用于全屏和窗口应用程序。

【问题讨论】:

  • 不,CUDA 不可能。您需要使用 DirectX 或 OGL 等图形 API。
  • 我猜你不应该相信你在电子邮件中读到的一切......

标签: windows video memory cuda framebuffer


【解决方案1】:

您所描述的不仅不可能,甚至可能被视为安全漏洞。通常,未经操作系统的某种同意和控制,一个应用程序不应该能够检索另一个应用程序的显示窗口。

我记得几年前就读过关于这种缺陷的文章,但我再也找不到这篇文章了。但是,还有许多其他文章讨论了类似的问题。例如在:

http://ece.neu.edu/groups/nucar/NUCARTALKS/snp14-gpusteal.pdf

他们讨论了允许恶意程序部分重建 Chromium 中显示的网页的 GPU 漏洞。

【讨论】:

  • 哇,这听起来像是非常好的晚间阅读。不要害怕......我只想在没有硬件捕获设备的情况下构建一个自制的流光溢彩。没有犯罪。
猜你喜欢
  • 2021-07-12
  • 2010-10-27
  • 1970-01-01
  • 2018-05-05
  • 2013-03-28
  • 1970-01-01
  • 2013-11-26
  • 2017-06-25
  • 2010-12-03
相关资源
最近更新 更多