共用方式為


點陣圖物件

注意

針對Windows 10上的應用程式,我們建議使用 Windows.UI.Composition API,而不是 DirectComposition。 如需詳細資訊,請參閱 使用視覺層將傳統型應用程式現代化

Microsoft DirectComposition 是點陣圖撰寫引擎。 它可讓應用程式開發人員結合多個點陣圖,並以各種方式操作它們,以在應用程式 UI 中達成有趣的視覺效果和動畫。 本主題描述 DirectComposition 支援的點陣圖內容類型。

點陣圖內容

應用程式藉由建立視覺物件,然後設定這些物件的 Content 屬性 ,提供 DirectComposition 與點陣圖內容來撰寫和產生動畫效果。 DirectComposition 不提供任何點陣化服務。 應用程式必須使用一些其他軟體型或硬體加速點陣化程式庫,例如 Direct2DDirect3D 來填入要撰寫的點陣圖。 撰寫之後,DirectComposition 會將撰寫的點陣圖內容傳遞至 桌面視窗管理員, (DWM) 轉譯至畫面。

支援的點陣圖內容類型 Microsoft DirectComposition 支援下列類型的點陣圖:

視訊記憶體點陣圖

視訊記憶體點陣圖會使用 Microsoft DirectX 方法來點陣化硬體, (包括 DX 到 GDI Interop 模型) 。 它是由呼叫端應用程式和 DirectComposition 可見的跨進程共用介面所支援。 視訊記憶體點陣圖不受分割限制,因為應用程式只能從 DirectComposition 紋理的來源表面讀取。

影片內容

應用程式可以使用 DirectComposition 來撰寫使用系結至 DirectComposition 介面之 DirectX 無視窗交換鏈結的視訊畫面。 就概念上,DirectComposition 會將視訊內容視為一連串的點陣圖。 DirectComposition 不提供呈現視訊畫面的方法。

DirectComposition 支援 DirectX 無視窗交換鏈結,也就是未系結至特定視窗的交換鏈結,並可讓兩個不同的應用程式跨進程界限共用無視窗交換鏈結。 共用無視窗交換鏈結可讓影片案例在一個進程中建立交換鏈結,並在第二個進程中與 DirectComposition 搭配使用。 無視窗交換鏈結是使用 IDXGIFactory2::CreateSwapChainForCompositionSurface 方法來建立。

如需 DirectX 交換鏈結的詳細資訊,請參閱 DXGI 概觀

身歷聲內容

就概念而言,立體交換鏈結是由 Microsoft DirectX Graphics Infrastructure (DXGI) 表面所組成,代表立體 3D 內容的左右通道。 當立體交換鏈結當做視覺效果的點陣圖資源使用時,DirectComposition 會以身歷聲撰寫。 所有非身歷聲內容 (單聲道內容) 視為具有相同的左右通道內容;也就是說,這兩個通道都會使用相同的點陣圖內容。 DirectComposition 會分別撰寫所有左側內容和所有右側內容。 如果顯示裝置無法進行立體化,DirectComposition 會根據應用程式 () 視為單聲道內容,並只針對點陣圖資源使用該資料撰寫,將左右身歷聲通道視為單聲道內容。

DirectComposition 不支援建立或操作身歷聲內容,也無法將單聲道交換鏈結升階為身歷聲配對。 應用程式必須先執行這些工作,才能將 DirectX 身歷聲內容呈現至 DirectComposition。 此外,應用程式必須針對深度感知提供左右通道位移;DirectComposition 無法調整左右通道位移,以修改 DirectX 身歷聲內容的感知深度。

當具備身歷聲功能的硬體可用時,DirectX 身歷聲內容會組成並保存到 DWM。

視窗點陣圖

「視窗點陣圖」不是真正的點陣圖,而是 DirectComposition 以分層最上層或子視窗點陣化即時取代的預留位置。 視窗點陣圖類似于 DWM 縮圖,不同之處在于縮圖可以包含來自許多視窗的貢獻,例如擁有的非子視窗,而 DirectComposition 視窗點陣圖一律只是一個視窗及其子系的標記法。

由於 DirectComposition 可以存取所有視窗和所有視覺化樹狀結構的重新導向表面,因此它可以重複使用多個視覺化樹狀結構中一個視窗的內容。 視窗必須分層,因為非分層視窗沒有專用的重新導向表面,因此,其點陣化不一定可供 DirectComposition 使用。

若要使用視窗點陣圖,應用程式會將視覺效果與視窗控制碼建立關聯, (HWND) 。 之後,每當視窗的內容變更時,DirectComposition 就會重新撰寫視覺效果,包括當內容因為與視窗相關聯的視覺化樹狀結構變更而變更時。 換句話說,例如 DWM 縮圖,DirectComposition 視窗點陣圖是「即時」。

將點陣圖內容與視覺效果產生關聯

針對這三種點陣圖,應用程式可以將相同的點陣圖與多個視覺效果產生關聯,這表示單一記憶體配置可以用來顯示相同的內容數次。

Alpha 色板

所有點陣圖的每個圖元都有 32 位 (BPP) 格式,其中包含每個圖元透明度的 8 位。 不過,應用程式可以指定 DirectComposition 應該如何使用 Alpha 色板。 特別是,DirectComposition 可以遵守 Alpha 色板,也可以完全忽略 Alpha,在此情況下,點陣圖會被視為完全不透明。

額外的 Alpha 模式會忽略 Alpha 色板,但會將紅色、綠色和藍色值視為個別色板 Alpha 值,而不是將這些通道的一般解譯視為色彩強度。 此模式適用于 ClearType 轉譯,這需要子圖元涵蓋範圍資訊。 若要使用每一通道 Alpha 模式,應用程式必須先使用Direct2DDirectWrite將子圖元涵蓋範圍資料寫入點陣圖。 接下來,應用程式必須設定正確的 Alpha 模式,並在將點陣圖與視覺效果產生關聯時指定文字色彩。 DirectComposition 會將文字色彩與涵蓋範圍資料混合,以針對背景產生 ClearType 混合。

在 ClearType 演算法不適用的情況下,例如,如果點陣圖不是圖元對齊和軸對齊,或是需要繪製到中繼表面,DirectComposition 就可以使用點陣圖中的子圖元涵蓋範圍資料來改為產生灰階點陣化,且不需額外費用。

如需詳細資訊,請參閱IDCompositionDevice::CreateSurfaceIDCompositionDevice::CreateVirtualSurface函式的AlphaMode參數描述。

DirectComposition 概念