如何从外部应用程序调整 d3d 应用程序的大小。 (C#)

发布于 2024-08-17 06:28:57 字数 259 浏览 3 评论 0原文

我正在尝试从外部应用程序、我的应用程序调整 d3d 窗口的大小。我可以调整窗口大小,但 d3d 引擎仍然认为其分辨率为 1024x768 或您运行时的分辨率。我正在考虑 DLL 注入,但我该如何调整窗口大小。

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

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

I'm trying to resize a d3d window from an external application, from my application. I can resize the window, but the d3d engine still thinks its 1024x768 or w\e res your running at. I was thinking a DLL inject, but how would i go about resizing the window.

I did some research and i'm pretty sure i need to change the BackBufferWidth and BackBufferHeight.

Any ideas? Are there any good DLL librarys i can use with my C# application to do easy d3d functions like writing to the screen or changing the resolution or changing the z buffer of structs etc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情何以堪。 2024-08-24 06:28:57

从外部应用程序调整 direct3d 后台缓冲区/窗口的大小是一个非平凡非安全应用程序。

“理论上”您应该:

1)停止应用程序(否则您可能会遇到意外情况,例如崩溃或冲突或其他灾难)
2-DX9) 选择用于创建设备的设备。
3-DX9) 在设备上调用重置来调整后备缓冲区的大小
4-DX9) 调整应用程序窗口的大小。
5-DX9) 重新启动应用程序

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

但请记住,如果应用程序仍然认为它处于某个分辨率(例如使用降级的纹理,或尝试将窗口大小调整回其先前的分辨率或谁知道什么),那么所有这些都将毫无用处。

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


为了在已经存在的应用程序上编写代码更容易,只需在启动时创建一个 Direct3D dll 注入应用程序,然后再进行 Font 绘制调用。

Resizing a direct3d backbuffer/window from an external application is a NON-TRIVIAL NON-SAFE application.

"Teorically" you should :

1) Stop the application (otherwise you may go into unexpected situations like crash or conflicts, or other calamities)
2-DX9) Pick the device used to create the device.
3-DX9) Call reset on the device resizing the backbuffer
4-DX9) Resize the window of the application.
5-DX9) Restart the application

2-DX10) Pick the DXGI Swapchain of the app.
3-DX10) Resize the swapchain.
4-DX10) Restart the application.

But remember that all this would be anyway useless if the app still think it is in a certain resolution (like using downgraded texture, or trying to resize back the window to its precedent resolution or who knows what).

To summary, its a very risk kind of programming and I think it would not yield the expected results.


For writing on an already existing application is more easy, just make a Direct3D dll to inject in the application at start-time and before present put your Font draw call.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文