Ala*_*lan 14
Fraps是从第三方应用程序对全屏DirectX应用程序执行此类操作的典型示例.它通过挂钩一些系统调用并将自身插入应用程序和DirectX之间的调用链来工作.有一些性能损失,但总的来说它是最小的.
这个页面似乎有一些关于如何以这种方式挂钩应用程序的细节和示例代码.
如果我没记错的话,从其他论坛讨论中找不到(目前找不到链接.搜索"fraps如何工作"之类的东西,这是一个流行的问题),Fraps挂钩了一些东西来强制app加载其DLL ,然后挂钩Present()调用并在调用真实的Present()之前执行device-> Clear()调用,并使用一个小矩形列表设置为不同的颜色,这可以拼出它显示的FPS数字.这对性能影响最小,并且与应用程序正在执行的任何呈现广泛兼容.覆盖位图会更复杂,因为在现在这样做并不容易.也许如果您可以挂钩EndScene,那么您可以做更多,但您必须小心不要更改设备状态.
PIX具有对DirectX驱动程序的特权访问权限,因此我不希望能够将其用作模拟模型.
如果目标应用程序在窗口模式下运行,挂钩DirectX仍然有效,但您也可以使用GDI.
编辑: 我认为这是我最初想到的链接.
| 归档时间: |
|
| 查看次数: |
28767 次 |
| 最近记录: |