有没有办法在绘制之前修改帧缓冲区?假设我想在任何桌面应用程序的整个屏幕中将红色值设置为零。
1) 捕获绘图事件并获取帧缓冲区
2) 获取每个像素并将 R=0 设置为 RGB 值(使用 GPU 语言以避免 GPU->CPU 内存传输)
3) 绘制修改后的帧缓冲区
有没有办法在绘制之前修改帧缓冲区?假设我想在任何桌面应用程序的整个屏幕中将红色值设置为零。
1) 捕获绘图事件并获取帧缓冲区
2) 获取每个像素并将 R=0 设置为 RGB 值(使用 GPU 语言以避免 GPU->CPU 内存传输)
3) 绘制修改后的帧缓冲区
哈,我找到了您可能正在寻找的东西:
直接内核对象操作
这是一个可以编写此类过滤器驱动程序的 Windows API,您正在寻找。他们可以授予您对内核内存的完全访问权限并允许您对其进行修改。至于你可以挂钩文件系统和位置,作为内核内存本身和较低级别的网络管理,甚至可以使操作系统本身崩溃,我敢打赌你可以在它们被提交到 GPU 之前挂钩 GPU 信息!
以下是它的简短描述:
http://www.blackhat.com/presentations/win-usa-04/bh-win-04-butler.pdf
Windows 下的 API 能够执行这些钩子,例如:
女士绕道
我不愿意在那个 API 中工作,但从描述中它应该能够做到这一点。