關於 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 和一部分。 某些 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 10 層級-9 轉譯,也可在先前的 Direct3D 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 樣式,或是否透過 Multisample Antialiasing 或其他機制在轉譯程式中下游執行反鋸齒。

互通性

透過與 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 概觀