将 Windows 事件循环与 DirectX 渲染循环分离

本文关键字:循环 分离 DirectX Windows 事件 | 更新日期: 2023-09-27 18:30:32

当通过 .NET 使用 DirectX 和 SharpDX 进行渲染时,有没有办法将 Windows 事件循环与 directx 渲染循环分离?

这意味着我希望在例如调整窗口大小时继续渲染。

将 Windows 事件循环与 DirectX 渲染循环分离

是的,您需要为 Windows 循环事件创建一个单独的线程。

您可以使用Systems.Threading库。

请记住,渲染应该在主线程中,只需为 Windows 事件创建另一个线程,它就可以工作。

通常,您永远不应该在应用程序主线程上进行 DirectX 渲染,这一点怎么强调都不为过。

在单独的 System.Threading.Thread 上启动并运行渲染循环后,加入 System.Threading.ManualResetEvent 或 System.Threading.ManualResetEventSlim 等信号机制,以确保在调整 SwapChain 大小时呈现线程不会尝试绘制。

需要在单独的线程上完成的是呈现,而不是处理 Windows 消息。 希望这有帮助!