ISurfaceImageSourceNativeWithD2D 介面 (windows.ui.xaml.media.dxinterop.h)
提供在 SurfaceImageSource 或 VirtualSurfaceImageSource中顯示的共用 Microsoft DirectX 表面實作。
繼承
ISurfaceImageSourceNativeWithD2D介面繼承自IUnknown介面。 ISurfaceImageSourceNativeWithD2D 也有下列類型的成員:
方法
ISurfaceImageSourceNativeWithD2D介面具有這些方法。
ISurfaceImageSourceNativeWithD2D::BeginDraw 起始相關聯 SurfaceImageSource 或 VirtualSurfaceImageSource 的更新。 |
ISurfaceImageSourceNativeWithD2D::EndDraw ISurfaceImageSourceNativeWithD2D::EndDraw 方法 (windows.ui.xaml.media.dxinterop.h) 關閉表面繪製作業。 |
ISurfaceImageSourceNativeWithD2D::ResumeDraw 繼續繪圖作業。 |
ISurfaceImageSourceNativeWithD2D::SetDevice 設定以繪製表面D3D11_CREATE_DEVICE_BGRA_SUPPORT建立的 Microsoft DirectX Graphics Infrastructure (DXGI) 或 Direct2D 裝置。 |
ISurfaceImageSourceNativeWithD2D::SuspendDraw 暫停繪圖作業。 |
備註
ISurfaceImageSourceNativeWithD2D介面提供SurfaceImageSource類別的原生實作。 若要取得 ISurfaceImageSourceNativeWithD2D 介面的指標,您必須將 SurfaceImageSource 實例轉換成 IInspectable 或 IUnknown,並呼叫 QueryInterface 方法。
Microsoft::WRL::ComPtr<ISurfaceImageSourceNativeWithD2D> m_sisD2DNative;
// ...
IInspectable* sisInspectable = (IInspectable*) reinterpret_cast<IInspectable*>(surfaceImageSource);
sisInspectable->QueryInterface(__uuidof(ISurfaceImageSourceNative), (void **)&m_sisD2DNative)
ISurfaceImageSourceNativeWithD2D介面提供高效能的批次 Direct2D 繪圖,只要它們共用相同的 Direct2D 裝置,即可在相同批次中繪製多個不同的SurfaceImageSource或VirtualSurfaceImageSource物件。 同時更新多個表面時,批次處理可以改善效能。
ISurfaceImageSourceNativeWithD2D介面可讓您從一或多個背景執行緒繪製SurfaceImageSource或VirtualSurfaceImageSource,以允許從 UI 執行緒轉譯高效能 DirectX。
只在ISurfaceImageSourceNativeWithD2D介面上呼叫SetDevice、BeginDraw和EndDraw方法,而不是在ISurfaceImageSourceNative或IVirtualSurfaceImageSourceNative介面上呼叫。
為了支援批次處理多個表面的更新以改善效能,您可以將 ID2D1Device 傳遞至 SetDevice 方法,而不是 ID3D11Device。 BeginDraw方法接著可以選擇性地傳回共用ID2D1DeviceCoNtext,應用程式會使用此共用 ID2D1DeviceCoNtext來繪製該更新的所有內容。
若要從背景執行緒繪製到表面,您必須設定任何 DirectX 資源,包括 Microsoft Direct3D 裝置、Direct3D 裝置內容、Direct2D 裝置和 Direct2D 裝置內容,才能啟用多執行緒支援。
您可以從任何背景執行緒呼叫 BeginDraw、 SuspendDraw和 ResumeDraw 方法,以啟用高效能的多執行緒繪圖。
一律在 UI 執行緒上呼叫 EndDraw 方法,以便同步處理更新 DirectX 內容與目前的 XAML UI 執行緒框架。 您可以在背景執行緒上呼叫 BeginDraw 、在背景執行緒上完成繪圖時呼叫 SuspendDraw ,並在 UI 執行緒上呼叫 EndDraw 。
使用 SuspendDraw 和 ResumeDraw ,在任何背景或 UI 執行緒上暫停和繼續繪製。
處理 SurfaceContentsLost 事件,以判斷何時需要重新建立如果系統重設 GPU 時可能會遺失的內容。
規格需求
最低支援的用戶端 | Windows 8.1 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 R2 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | windows.ui.xaml.media.dxinterop.h |