是否可以从另一个线程取消RenderTarget上的绘制?

时间:2014-06-30 20:25:14

标签: c# direct2d sharpdx

出于美观原因,Direct2D渲染循环在其自己的线程上运行。无论主窗口上的窗口调整大小或其他消息泵块如何,都可以实现平滑且即时的动画。除非鼠标悬停,滚动,窗口大小调整等使场景无效,否

一旦绘图代码在渲染目标上调用Monitor.Wait,我就看不到取消演示文稿的方法。如果窗口以某种方式失效,则场景将被丢弃并重新绘制。我可以做些什么来回到一个干净的石板,为下一个BeginDraw做好准备,而无需完成并展示场景?我是否可以导致渲染错误来中断将跳过演示文稿的绘图线程?

1 个答案:

答案 0 :(得分:0)

是的,试着导致错误。例如renderTarget->PushAxisAlignedClip()然后renderTarget->EndDraw()而不弹出剪辑。这将导致D2DERR_PUSH_POP_UNBALANCED (0x88990016)。然后,您必须Flush()目标才能重置错误状态。