【问题标题】:Decouple Windows event loop from DirectX Rendering loop将 Windows 事件循环与 DirectX 渲染循环分离
【发布时间】:2016-01-15 21:05:54
【问题描述】:

在通过 .NET 使用 DirectX 和 SharpDX 进行渲染时,有没有办法将 windows 事件循环与 directx 渲染循环解耦?

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

【问题讨论】:

    标签: c# .net directx sharpdx


    【解决方案1】:

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

    您可以使用Systems.Threading 库。

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

    【讨论】:

    • 谢谢,我究竟如何为 windows 事件创建线程?
    • 我在 Visual C++ 和 DirectX 中尝试过。有一个函数 AfxBeginThread 用于在 Visual C++ 中创建线程,您可以使用 Systems.Threading 库在 .Net 中创建线程。您只需要创建一个线程并通过该线程调用您的 Windows 事件函数。关于线程你可以从codeproject.com/Articles/26148/…获得帮助
    【解决方案2】:

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

    在单独的 System.Threading.Thread 上启动并运行渲染循环后,合并诸如 System.Threading.ManualResetEvent 或 System.Threading.ManualResetEventSlim 之类的信号机制,以确保您的渲染线程在您执行时不会尝试绘制正在调整 SwapChain 的大小。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2014-06-16
      • 2013-04-28
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多