全屏DirectX叠加? 是的..再次C#

看起来这个问题在不同的背景下被多次询问过,我在为游戏制作叠加层方面取得了一些进展(这是用于信息数据等)。 我也想让它像Steam和XFire一样可以互动。

我已经设法获得了一个直接游戏的叠加,而它在窗口模式…有点。

我已经看了遍布堆栈溢出和谷歌没有很多运气。

如果需要,我可以用C ++而不是C#来尝试。 我知道C#,但我不认为自己是一个专业人士。 只需要更好的解释。 如果我能够正常工作,我会愿意整理一个精彩的截屏/教程。

注意:我真的想用本机代码而不是库来做这个,但是如果那里有一个好的免费库,我想查看它。

示例: 如何在Windows游戏上叠加图形?

http://www.gamedev.net/community/forums/topic.asp?topic%5Fid=359794

C#将重叠forms“锁定”到另一个窗口的位置

更多信息:我确实设法获得一个窗体覆盖游戏窗口,并将其父设置为使用SetParent。 然而,这并不能很好地工作,因为它根本无法全屏工作,并且透明度不起作用。 (基本上有一个透明度键,TopMost设置为TRUE。)我真的想找到一个不同的方法。

几年前我在delphi做过这个。 当时唯一的选择是将一个本机Win32 DLL注入进程,该进程将调用我的DLL DirectDraw函数,我将其余的代理到真正的DirectDraw。 如果程序将全屏切换为窗口或从窗口切换,这是唯一可以保证它可以工作的方法。 我的DLL将创建一个内存中的共享文件空间,以便在它和我的程序之间进行通信。

我这样做的原因是在游戏中写下在TeamSpeak或Ventrilo中发言的人。

但是,CLR运行时对象无法使用此方法。 您唯一的选择是查看C ++ Native DLL Injectrion / Wrapping。

我建议使用DirectShow库的RenderToSurface方法。 它有你想要的几乎所有东西。 (DirectX曲面绘图)。

http://www.experts-exchange.com/Programming/Game_Development/Game_Graphics/DirectX/Q_20410452.html (一个例子)

http://msdn.microsoft.com/en-us/magazine/cc164112.aspx