首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取VRAM数据

读取VRAM数据
EN

Stack Overflow用户
提问于 2011-11-24 05:19:36
回答 2查看 1.8K关注 0票数 2

我正在尝试编写一个C++程序来捕获屏幕上显示的所有内容。

经过大量的Googling搜索后,我发现了捕获特定窗口、特定程序屏幕或某个程序的特定缓冲区的方法。不知何故,我得到了一些代码,可以捕获屏幕,但他们没有显示鼠标或视频。

然后我才知道,无论显示的是什么,捕获所有内容的唯一方法就是访问显卡上的视频RAM (我的显卡是集成显卡)。但我找不到任何方法来读取VRAM数据。

我知道VRAM保存到显示器上的每一个像素。这就是我希望我的程序读取的内容,并快速读取它,以获得大约30fps。我需要存储在VRAM中的原始位图,就在它被转换为模拟之前。

编辑:-我刚刚找到了这个sdl和像素烤面包器库...它们可以读取所谓的帧缓冲器...这会有什么用处吗? opengl有一个叫做getPixels()的方法,它可以读取所有应用程序的缓冲区数据吗?

EN

回答 2

Stack Overflow用户

发布于 2011-11-24 05:26:40

使用硬件覆盖时,可能实际上没有包含屏幕图像和鼠标光标的图像。

在没有鼠标光标的情况下捕获屏幕的代码是读取VRAM。

票数 0
EN

Stack Overflow用户

发布于 2011-11-24 09:07:04

最有可能的是,你必须为Windows开发一个内核模式驱动程序,因为只有从操作系统内核你才能直接访问所有东西。不过,这并不是一件容易的事情,如果你试图给你的驱动签名,微软很可能会拒绝。或者,如果他们签名,他们可能很快就会撤销签名。简而言之,由于相关的法律问题,你在分发你的驱动程序时会遇到问题。

另一种选择是找到Windows运行的开源PC模拟器,并播放相关视频,然后对其进行黑客攻击以访问虚拟机的内存。同样的法律问题。

除此之外,我不认为有保证的方式来获得所有的数据(当然,除了侵入硬件或简单地在摄像头上捕捉屏幕之外)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8249208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档