首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >叠加在DirectX11游戏上

叠加在DirectX11游戏上
EN

Stack Overflow用户
提问于 2011-04-15 16:49:37
回答 1查看 3K关注 0票数 4

我正在做一个项目,以显示任何DirectX11游戏的覆盖。现在可以在一些DX11游戏中显示,但在其他一些游戏中不能显示。

我使用MS绕道挂接了DX11 API IDXGISwapChain::Present()。在函数Present()中,我设置了每个管道,调用DrawIndex和ResourceCopy将覆盖纹理更新到图形处理器的内存中,然后调用原始的Present将后台缓冲区带到前台缓冲区。它在Unigene和DIRT2等游戏中运行良好,但在LostPlanet2和DragonAge2等其他游戏中则不起作用。

通过连接所有DX11函数来做一些日志记录,我发现了一个有趣的事情--那些不能正常工作的游戏在调用Present之前会调用ResourceCopy和ResourceCopyRegion。

正如我前面所说的,我还在我的Present()中调用了ResourceCopy。这是它不起作用的原因吗?我该如何解决这个问题呢?

谢谢,马歇尔

EN

回答 1

Stack Overflow用户

发布于 2011-12-23 15:03:22

我也在开发一个类似的D3D11代理钩子。但是,我将从入口点D3D11CreateDevice和D3D11CreateDeviceAndSwapChain开始。然后使用替换类作为我自己的钩子。我发现在某些情况下,绕道实际上不能正确地执行绕道:错误绕行EntryPoint():6我通过实际修改Detours3.0源代码来正确地跳跃函数来解决这个问题。

我使用的是64位Windows7,但它是为x86 Detours3.0编译的。我可以尝试这些二进制文件来工作。除了程序员使用的呈现风格之外,很难解释ResourceCopy会在哪里影响调用路径。如果你愿意,你可以把你的项目代码发给我,我也许能帮上忙。

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

https://stackoverflow.com/questions/5674371

复制
相关文章

相似问题

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