1

我正在尝试将一些 GDI/GDI+ 代码移植到 Direct2D,但对于哪种类型的目标更适合使用(DC 或 Hwnd)我仍然有点困惑,因为我发现不同的性能取决于我是否使用了显卡。特别是,我发现了以下问题:

如果我使用 DCRenderTarget 我不能使用硬件加速(或默认),因为我继续违反内存的保护区。如果我使用 HwndRenderTarget,这不会发生。

如果我使用 HwndRenderTarget,通常一切都很好,但如果我有很多窗口(如按钮),我会失去对主窗口的关注,它无法识别 KeyPressed 消息,并且,如果我使用 Gpu,性能下降很多并且强烈依赖于活动目标的数量(如果我使用软件加速则不会发生)。

有没有人遇到过同样的问题?你能推荐一些关于它的东西吗?

非常感谢!

4

1 回答 1

0

一般来说,如果你想让 Direct2D 与 GDI 互操作,你应该使用 ID2D1DCRenderTarget,否则,使用 ID2D1HwndRenderTarget。

我不太明白你所说的性能,你的意思是当你的主窗口失去焦点时性能很差?如果是这种情况,您可以处理窗口状态,使其在窗口失去焦点时停止渲染,例如不活动。

于 2012-11-17T11:38:56.067 回答