共用方式為


關於 Direct2D

本主題介紹 Direct2D,這是一種 API,可讓 Win32 開發人員以更高的效能和視覺品質執行 2D 圖形轉譯工作。

什麼是 Direct2D?

Direct2D 是硬體加速的即時模式 2D 圖形 API,可為 2D 幾何、點陣圖和文字提供高效能和高品質的轉譯。 Direct2D API 的設計目的是要與使用 GDI、GDI+或 Direct3D 的現有程式代碼互作。

Direct2D 主要是設計供下列開發人員類別使用:

  • 大型、企業級、原生應用程式的開發人員。
  • 建立控件工具組和連結庫以供下游開發人員取用的開發人員。
  • 需要伺服器端轉譯 2D 圖形的開發人員。
  • 使用 Direct3D 圖形且需要簡單、高效能的 2D 和文字轉譯的開發人員,以便用於功能表、使用者介面 (UI) 元素和抬頭顯示器 (HUD)。

為什麼是 Direct2D?

Microsoft Windows 中建立新 2D 圖形 API 的主要動機包括:

  • 為了跟上 Windows 用戶習慣的日益增長的視覺豐富程度。
  • 若要讓開發人員撰寫 2D 轉譯程式代碼,此轉譯程式代碼會直接隨著其執行的電腦圖形處理硬體進行調整。
  • 若要讓開發人員撰寫程式碼,以在服務環境中執行渲染 2D 圖形。

近年來,終端使用者已開始預期數位體驗的視覺逼真度更高。 這種趨勢反映在電子產品中。 GPS 裝置、媒體播放設備、行動電話和數位相機逐年提供更豐富的體驗。 這種趨勢也可以在電影、電視、視頻遊戲和網路上的圖形內容多樣性中看到。 為了跟上這些變更的步伐,開發人員會一直要求將現有的 Windows 應用程式提升到下一層視覺豐富度。

現代 Windows 個人電腦中的圖形處理器因應視頻遊戲圖形和 Windows 的使用體驗中的一些元素(如 Windows Media Center 和 Aero)而穩步發展。 某些 Windows 應用程式可以使用 Microsoft Direct3D 和 Windows Presentation Foundation (WPF) 來利用新式 GPU。 雖然 Direct3D 提供高端 3D 圖形應用程式和 WPF 可解決 .NET 開發人員的需求,但對於以 GDI 和 GDI+ 為基礎的大型現有程式代碼基底,或想要在其 Direct3D 型應用程式中納入高品質 2D 圖形的開發人員而言,會有差距。

最後,在服務中使用的圖形 API 的需求已成為企業和 Web 開發案例中工作的開發人員的新興需求。 現有的轉譯 API 著重於單一用戶會話中的用戶端轉譯。 因此,在服務情境下使用時,可能在健全性和延展性方面不足。 需要新的 API 才能解決此問題。

高效能與最高可用性

Direct2D 是使用 Direct3D 10.1 API 建置的使用者模式連結庫。 這表示 Direct2D 應用程式受益於現代化主流 GPU 上的硬體加速轉譯。 舊版 Direct3D 9 硬體也可以通過使用 Direct3D 10 級別 9 的渲染來實現硬體加速。 此組合可在現有 Windows 計算機上,在圖形硬體上提供絕佳的效能。

注意

從 Windows 8 開始,Direct2D 是使用 Direct3D 11.1 API 所建置。

 

下圖顯示 Direct2D 的分層架構。

direct2d 分層架構的 圖表

在無法使用硬體加速的情況下,Direct2D 包含高效能軟體光柵化器。 在軟體中轉譯時,使用 Direct2D 的應用程式在轉譯效能上顯著優於使用 GDI+,而且在擁有相似視覺品質的情況下。 軟體轉譯器也設計為用於服務環境。

使用 Direct2D 繪製的內容也可以透過 Windows 7 作業系統中的遠端桌面協議 (RDP) 基礎架構來遠端顯示。 開發人員可以選取轉譯是由顯示電腦上的 GPU 處理,還是是在本機轉譯,並以點陣圖形式傳輸。 您可以根據所需的填充率和繪製的圖形基元數量來做出這個選擇。 當顯示電腦執行 Windows 7 之前的作系統時,遠程顯示轉譯會透過網路傳輸位圖來執行。

藉由提供單一 API,藉由提供軟體後援、遠端桌面和服務轉譯,結合 Direct3D 的效能和高可用性,Direct2D 可讓開發人員在許多不同的案例中擁有高效能轉譯的單一實作。

視覺品質

針對圖形使用 Direct2D 的應用程式可提供比使用 GDI 所能達成的更高的視覺品質。 Direct2D 使用逐元件抗鋸齒技術,讓渲染內容中的曲線和線條更順暢。 當渲染 2D 基本圖元時,也完全支持透明度和 Alpha 混合效果。 下列影像會比較使用 GDI 轉譯的別名內容與 Direct2D (右側) 所轉譯的反鋸齒內容。

使用 gdi 和 direct2d 呈現的曲線和線條圖示

開發人員可以指定向量圖形的別名轉譯。 這用於需要貼齊至硬像素邊界的情境中,例如指標或尺規等 UI 元素、或當必須匹配 GDI 樣式的輸出,或者透過多重採樣抗鋸齒或其他機制於渲染流程的下游進行抗鋸齒處理。

互作性

透過與 GDI 和 Direct3D 的表面層級互操作性,開發人員可以更容易整合基於 Direct2D 的轉譯。 主要使用 GDI、GDI+ 或 Direct3D 轉譯內容的應用程式,可以先使用 Direct2D 來轉譯其應用程式的特定區域,一段時間後移至主要透過 Direct2D 執行轉譯的模型,使用 GDI 主要用於外掛程式或舊版擴充性。

Direct2D 也可讓您輕鬆地使用 DirectWrite,以取得高品質文字和 Microsoft Windows 映射元件 (WIC)的進階映射功能。

如需 Direct2D 互作性的詳細資訊,請參閱 Direct2D SDK 的 互作性一節。

總結

Microsoft Direct2D 可讓開發人員在其應用程式中建置 2D 圖形功能,以透過 GDI 提供改善的視覺品質,以及使用新式 GPU 調整的效能特性。 Direct2D 互作性模型可讓開發人員在 GDI、GDI+或 Direct3D 型轉譯的同時,選擇性地移轉其應用程式的部分。

適用於 Windows 8 的 Direct2D 快速入門

Direct2D API 概觀