2010-09-07 73 views
1

在开发游戏中的叠加层(类似于Steam所做的)中提到的一些小信息提到必须拦截调用图形API的帧交换函数,并将自己的绘图例程挂钩在其中。用于游戏内覆盖的SDK

这似乎是什么Mumble(游戏VoIP)正在做。由于我从来没有做过任何涉及钩子的事情,并且由于我对DirectX没有多少经验,所以我想知道是否存在某种类型的SDK,或者甚至只是一个比可以实现输入的Mumble更易读的示例,演示如何实现交互式游戏内覆盖。嘟is很棒,但我似乎无法把头围绕在它周围,尤其是为了正确挂钩它而做的更有趣的事情。

此外,如果您有关于如何做到这一点在Mac和Linux的详细信息... :-)

回答

1
  • 开始由不拦截图形API设计你覆盖。请记住,键输入必须使用全局钩子。
  • 使用Direct3D拦截器dll将它集成到应用程序中。谷歌它来检索一个基本代码。

编辑:

+0

保健佳品特定链接? “Direct3D拦截器DLL”不会通过Google返回任何明智的结果。 – 2010-09-08 09:47:21

+0

放置在应用程序文件夹中的代理/拦截器DLL并不是我正在寻找的,因为我希望能够影响在该机器上启动的任何游戏。看起来像这个问题可能包含我正在寻找的答案:http://stackoverflow.com/questions/1994676/hooking-directx-endscene-from-an-injected-dll – 2010-09-12 14:31:15

1

也许GLIntercept可以给你一些启发。 它提供了一个openGL.dll文件,您可以将它放在应用程序的文件夹中。 Windows根据优先级规则加载此dll而不是system32的dll。 GLIntercept将所有调用转发给system32的dll,但同时记录它们。 所以,你可以实现你自己的glSwapBuffers(),它可以呈现更多的东西,然后转发呼叫。

源代码也可用。

我给予好评你的问题,我感兴趣的是你将来的发现......随意转贴,当你有更多的信息:)

+0

谢谢:-)不幸的是,GLintercept(和等效DX的方法),你描述他们不是我要找的;我想将这些功能注入任何启动的游戏中。这就是说,它看起来像这个相关的问题(由StackOverflow建议):http://stackoverflow.com/questions/1994676/hooking-directx-endscene-from-an-injected-dll似乎包含答案。 – 2010-09-12 14:27:55