我正在尝试从我的应用程序中调整外部应用程序的d3d窗口。我可以调整窗口的大小,但是d3d引擎仍然认为它的1024x768或者你正在运行。我正在考虑DLL注入,但我将如何调整窗口大小。
我做了一些研究,我很确定我需要更改BackBufferWidth和BackBufferHeight。
有什么想法吗?有没有好的DLL库我可以用我的C#应用程序来做简单的d3d功能,如写入屏幕或更改分辨率或更改结构的z缓冲区等?
答案 0 :(得分:0)
从外部应用程序调整direct3d后备缓冲区/窗口的大小是非繁琐的非安全应用程序。
“Teorically”你应该:
1)停止申请(否则您可能会遇到意外情况,如崩溃或冲突或其他灾难)
2-DX9)选择用于创建设备的设备
3-DX9)调整后备缓冲区的设备上的呼叫复位
4-DX9)调整应用程序窗口的大小。
5-DX9)重启应用程序
2-DX10)选择应用程序的DXGI Swapchain
3-DX10)调整交换链的大小。
4-DX10)重新启动应用程序。
但请记住,如果应用程序仍然认为它处于特定分辨率(例如使用降级纹理,或者尝试将窗口调整为其先前分辨率或者知道什么),那么这一切都无济于事。
总结一下,这是一种非常冒险的编程,我认为它不会产生预期的结果。
对于已经存在的应用程序上的写入更容易,只需在启动时和之前将应用程序中的Direct3D dll注入到您的Font绘制调用中。