用Direct2d在单独的线程中渲染大量文本的正确方法

时间:2019-02-20 17:10:51

标签: c++ directx sharpdx direct2d

我编写了一个程序,需要在屏幕上渲染大量文本,当用户移动滚动条或更改窗口大小时,必须重新渲染文本,并且需要半秒或更长时间对用户来说非常不愉快。

所以我发现的解决方案是渲染将在单独的线程中完成,并且始终在后台运行,并且在需要时,他会收到一条消息并渲染所需的一切。

当用户通过拖动窗口的一角来更改窗口的大小时,会出现问题,然后渲染线程会收到一条消息以进行渲染,并且在渲染完成之前,窗口会再次调整大小,这会导致文本拉伸,因为渲染器是为较小的宽度而设计的,并且宽度已经越来越大。

最后,执行了新的渲染,文本看起来很漂亮,但是当更改窗口的宽度时,用户会看到文本被拉伸了,这不是很好。

Direct2D documentation上描述了行为:

  

如果EndDraw提供了缓冲区,则此位图将拉伸以覆盖   呈现它的表面:窗口的整个客户区域

该问题如何解决?

0 个答案:

没有答案