2010-01-05 97 views
0

我正试图从外部应用程序,从我的应用程序调整d3d窗口。我可以调整窗口的大小,但d3d引擎仍然认为它的1024x768或W/e res你跑。我在想一个DLL注入,但我怎么去调整窗口的大小。如何从外部应用程序调整d3d应用程序的大小。 (C#)

我做了一些研究,我很确定我需要更改BackBufferWidth和BackBufferHeight。

任何想法?有没有什么好的DLL库可以和我的C#应用​​程序一起使用,以执行简单的d3d函数,如写入屏幕或更改分辨率或更改结构的z缓冲区等?

回答

0

从外部应用程序调整direct3d backbuffer/window的大小是一个非TRACIAL不安全的应用程序。

“Teorically”你应该:

1)停止应用程序(否则你可能会进入像死机或冲突,或其他灾难)意外情况
2 DX9)选择用于创建设备的设备。
3-DX9)调整设备上的调用重新设置后台缓冲区的大小
4-DX9)调整应用程序的窗口大小。
5-DX9)重新启动应用程序

2-DX10)选择应用程序的DXGI Swapchain。
3-DX10)调整交换链。
4-DX10)重新启动应用程序。

但请记住,如果应用程序仍然认为它处于特定分辨率(如使用降级纹理,或尝试将窗口调整为其先前解决方案的大小或者知道什么内容),则无论如何都是无用的。

总结,它是一种非常危险的编程方式,我认为它不会产生预期的结果。


关于一个已经存在的应用程序中编写较为简单,只是做一个Direct3D DLL在启动时的程序截获和现在把你之前绘制字体通话。