1

一部の GDI/GDI+ コードを Direct2D に移植しようとしていますが、どちらのタイプのターゲット (DC または Hwnd) を使用するのが適切かについてまだ少し混乱しています。 GPU。特に、次の問題が見つかりました。

DCRenderTarget を使用すると、ハードウェア アクセラレーション (またはデフォルト) を使用できません。これは、メモリの保護領域の違反が続いているためです。HwndRenderTarget を使用すると、これは発生しません。

HwndRenderTarget を使用する場合、通常はすべて問題ありませんが、ウィンドウ (ボタンなど) が多数ある場合、KeyPressed メッセージを認識しないメイン ウィンドウへのフォーカスが失われ、Gpu を使用するとパフォーマンスが低下します。多く、アクティブなターゲットの数に大きく依存します (ソフトウェア アクセラレーションを使用している場合は発生しません)。

誰かが同じ問題に遭遇しましたか? それについて何かお勧めできますか?

どうもありがとう!

4

1 に答える 1

0

一般に、Direct2D を GDI と相互運用する場合は、ID2D1DCRenderTarget を使用する必要があります。それ以外の場合は、ID2D1HwndRenderTarget を使用します。

パフォーマンスについて何を言っているのかよくわかりませんが、メイン ウィンドウがフォーカスを失ったときにパフォーマンスが悪かったということですか? その場合は、ウィンドウのステータスを処理して、非アクティブなど、ウィンドウがフォーカスを失ったときにレンダリングを停止させることができます。

于 2012-11-17T11:38:56.067 に答える