【发布时间】:2016-01-15 21:05:54
【问题描述】:
在通过 .NET 使用 DirectX 和 SharpDX 进行渲染时,有没有办法将 windows 事件循环与 directx 渲染循环解耦?
这意味着我希望在调整窗口大小时继续渲染。
【问题讨论】:
在通过 .NET 使用 DirectX 和 SharpDX 进行渲染时,有没有办法将 windows 事件循环与 directx 渲染循环解耦?
这意味着我希望在调整窗口大小时继续渲染。
【问题讨论】:
是的,您需要为您的 windows 循环事件创建一个单独的线程。
您可以使用Systems.Threading 库。
记住渲染应该在主线程中,只需为windows事件创建另一个线程,它就会工作。
【讨论】:
通常,您应该从不在应用程序主线程上进行 DirectX 渲染,这一点怎么强调都不过分。
在单独的 System.Threading.Thread 上启动并运行渲染循环后,合并诸如 System.Threading.ManualResetEvent 或 System.Threading.ManualResetEventSlim 之类的信号机制,以确保您的渲染线程在您执行时不会尝试绘制正在调整 SwapChain 的大小。
需要在单独的线程上完成渲染,而不是处理 Windows 消息。希望这会有所帮助!
【讨论】: