8

GDI32.dllマシンで利用可能なハードウェア アクセラレーションを利用するバージョンを作成した人はいますか? gdiplus.dll?

Windows Vista 以降、GDI はハードウェア アクセラレーションではなくなりました。(GDI+ はハードウェア アクセラレーションではありませんでした)。Microsoft が GDI (および GDI+) をコンピューター上で適切に実行できるように修正しなければ、ネイティブ アプリケーション (C++ MFC、Delphi など) とマネージ WinForms アプリケーションは、永遠に不十分に動作し続けるでしょう。

ビジネス アプリケーションにDirect2Dを使用することはできますが、GDI の存在を前提とした数十年にわたるライブラリ サポート コードを使用して、開発環境がまだコントロールを作成しているという事実を制御することはできません。


アプリケーションの互換性: グラフィカル デバイス インターフェイス (GDI) :

LineTo や Rectangle などの GDI プリミティブは、ビデオ ハードウェアではなくソフトウェアでレンダリングされるようになり、ディスプレイ ドライバーが大幅に簡素化されました。

Windows とビデオ メモリ

XP GDI では、OS の構成方法またはデバイス ドライバーに応じて、さまざまな程度で GPU アクセラレーションが実行されます (詳細については、「フックとパント」を参照してください)。Vista では、GDI は GPU アクセラレーションではありません

Direct2D と GDI の比較

その結果、Windows Vista では、GDI DDI ディスプレイ ドライバーは、Microsoft 提供のドライバーである Canonical Display Driver (CDD) によってのみ実装されるように変更されました。システム メモリ ビットマップにレンダリングされた GDI。ダーティ リージョンは、ウィンドウ マネージャがデスクトップを合成するために使用するビデオ メモリ テクスチャを更新するために使用されました。

4

3 に答える 3

3

Vista は、GDI パフォーマンスの歴史の中で特別なケースだったようです。以下の 2 つの記事は、GDI の未来が再び明るく見えることを示しています。

http://msdn.microsoft.com/en-us/library/ff729480%28VS.85%29.aspx

GDI は Windows XP でハードウェア アクセラレーションされ、デスクトップ ウィンドウ マネージャーが実行されていて WDDM 1.1 ドライバーが使用されている場合、Windows 7 でアクセラレーションされます。Direct2D は、DWM が使用されているかどうかに関係なく、ほぼすべての WDDM ドライバーでハードウェア アクセラレーションされます。Vista では、GDI は常に CPU でレンダリングされます。

http://blogs.msdn.com/b/e7/archive/2009/04/25/engineering-windows-7-for-graphics-performance.aspx

実世界のアプリケーション統計に基づいて... グラフィックス IHV パートナーと協力して、最も一般的に使用される GDI 操作を高速化するためのドライバーのサポートを提供しました。

于 2010-08-05T13:57:47.783 に答える
1

ハードウェアアクセラレーションとはどういう意味ですか? つまり、GDI はラスター ブリット以外にはあまり機能しませんが、それらはハードウェア アクセラレーションでした。そして、Vista と Windows 7 がデスクトップ アプリでそれほど遅くないことを考えると、それでも遅くはありません。

GDI は引き続きビデオ ドライバーにすべての面倒な作業を行わせるため、GDI がハードウェア アクセラレーションされていない場合は、GDI ではなくドライバー ベンダーに問題があります。

于 2010-04-15T09:16:35.357 に答える
1

そうです、GDI はグラフィックスをレンダリングするための「いつでもどこでも動作する」API です。ビデオドライバーへの要求は非常に低くなります。誰もがずっと前にそれを正しく理解していました。これにはしばらく時間がかかりましたが、ATI Mach ビデオ カードの明確な記憶が得られ、トラブルが絶えませんでした。かなり長い間、ATI 製品を購入することができなくなりました。

少し前に、誰もが DirectX を正しく理解していました。これは WPF レンダリング モデルを利用しており、仕事を成し遂げるために DirectX に完全に依存しています。Milcore はシム名です。WPF プログラミング モデルを受け入れるまでは、それを手に入れることはできません。

于 2010-04-14T22:07:53.340 に答える