如何在Windows游戏上叠加graphics?

我希望我的程序能够启动任何Windows游戏,并且在用户玩游戏时,在游戏窗口的某个部分间歇性地显示一些文本或图片。 游戏可能处于窗口模式或全屏模式。 从我已经能够从在线资源中find的东西,可以使用支持覆盖的graphics库,并使用Windows挂钩来跟踪目标应用程序的窗口。 在这方面我有一些问题。

  1. 叠加层会影响游戏的性能吗?
  2. 如何挂钩应用程序影响性能?
  3. 有没有其他办法可以做到这一点? 例如,您如何看待PIX (DirectXdebugging和分析工具)的工作?

Fraps是从第三方应用程序进行全屏DirectX应用程序的原型示例。 它通过挂钩一些系统调用并将其自身插入到应用程序与DirectX之间的调用链中来工作。 有一些性能受到打击,但总的来说是最小的。

这个页面似乎有一些细节和示例代码如何挂钩的应用程序以这种方式。

如果我记得正确的话,从其他论坛讨论(目前无法找到链接,搜索“fraps如何工作”,这是一个受欢迎的问题),Fraps钩了一些东西,迫使应用程序加载其DLL ,然后调用Present()调用并执行设备 – > Clear()调用,然后调用实际的Present(),并使用一个小矩形列表将其设置为不同的颜色,从而可以拼出显示的FPS编号。 这对性能的影响最小,并且与应用程序正在进行的任何呈现相兼容。 重叠位图会更复杂,因为在当前做起来不那么容易。 也许如果你可以挂钩EndScene,那么你可以做更多,但你必须小心不要改变设备状态。

PIX有权限访问DirectX驱动程序,因此我不希望能够将其用作模拟模型。

如果目标应用程序在窗口模式下运行,则挂接DirectX仍然有效,但也可以使用GDI。

编辑:我想这是我原本想的链接。