gpt4 book ai didi

windows - 如何在 Windows 游戏上叠加图形?

转载 作者:可可西里 更新时间:2023-11-01 12:41:12 25 4
gpt4 key购买 nike

我希望我的程序能够启动任何 Windows 游戏,并且在用户玩游戏时,间歇性地在游戏窗口的某些部分显示一些文本或图片。游戏可能处于窗口或全屏模式。根据我从在线资源中了解到的情况,这可以使用支持覆盖的图形库并使用 Windows Hooks 来跟踪目标应用程序的窗口来完成。在这方面,我有一些问题。

  1. 叠加层会影响游戏的性能吗?
  2. Hook 应用程序将如何影响性能?
  3. 还有其他方法可以实现这一目标吗?比如,你怎么看PIX ,DirectX调试分析工具,好用吗?

最佳答案

Fraps是从第三方应用程序对全屏 DirectX 应用程序执行此类操作的典型示例。它通过 Hook 一些系统调用并将自身插入到应用程序和 DirectX 之间的调用链中来工作。有一些性能影响,但一般来说影响很小。

This page似乎有一些关于如何以这种方式挂接应用程序的详细信息和示例代码。

如果我没记错的话,从其他论坛讨论(目前找不到链接。搜索“fraps 是如何工作的”之类的东西,这是一个热门问题),Fraps Hook 了一些东西来强制应用程序加载它的 DLL,然后 Hook Present() 调用并在调用真正的 Present() 之前执行 device->Clear() 调用,用一个小矩形列表设置为不同的颜色,这可以拼出它的 FPS 数显示。这对性能的影响很小,并且与应用程序正在执行的任何渲染都广泛兼容。覆盖位图会更复杂,因为在现在做起来并不容易。也许如果您可以 Hook EndScene,那么您可以做更多的事情,但您必须小心不要更改设备状态。

PIX 拥有访问 DirectX 驱动程序的特权,因此我不希望能够将其用作模型进行仿真。

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

编辑:我认为this是我最初想到的链接。

关于windows - 如何在 Windows 游戏上叠加图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3266346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com