iSurfaceImageSourceNativeWithD2D 接口 (windows.ui.xaml.media.dxinterop.h)

提供在 SurfaceImageSourceVirtualSurfaceImageSource 中显示的共享 Microsoft DirectX 图面的实现。

继承

ISurfaceImageSourceNativeWithD2D 接口继承自 IUnknown 接口。 ISurfaceImageSourceNativeWithD2D 也具有以下类型的成员:

方法

ISurfaceImageSourceNativeWithD2D 接口包含以下方法。

 
ISurfaceImageSourceNativeWithD2D::BeginDraw

启动对关联的 SurfaceImageSource 或 VirtualSurfaceImageSource 的更新。
ISurfaceImageSourceNativeWithD2D::EndDraw

iSurfaceImageSourceNativeWithD2D::EndDraw 方法 (windows.ui.xaml.media.dxinterop.h) 关闭图面绘制操作。
ISurfaceImageSourceNativeWithD2D::ResumeDraw

恢复绘图操作。
ISurfaceImageSourceNativeWithD2D::SetDevice

设置 Microsoft DirectX 图形基础结构 (使用 D3D11_CREATE_DEVICE_BGRA_SUPPORT 创建的 DXGI) 或 Direct2D 设备,以绘制图面。
ISurfaceImageSourceNativeWithD2D::SuspendDraw

挂起绘图操作。

注解

ISurfaceImageSourceNativeWithD2D 接口提供 SurfaceImageSource 类的本机实现。 若要获取指向 ISurfaceImageSourceNativeWithD2D 接口的指针,必须将 SurfaceImageSource 实例强制转换为 IInspectableIUnknown,并调用 QueryInterface 方法。


Microsoft::WRL::ComPtr<ISurfaceImageSourceNativeWithD2D>	m_sisD2DNative;
// ...
IInspectable* sisInspectable = (IInspectable*) reinterpret_cast<IInspectable*>(surfaceImageSource);
sisInspectable->QueryInterface(__uuidof(ISurfaceImageSourceNative), (void **)&m_sisD2DNative)
	

ISurfaceImageSourceNativeWithD2D 接口提供高性能的批处理 Direct2D 绘图,允许在同一批中绘制多个不同的 SurfaceImageSourceVirtualSurfaceImageSource 对象,只要它们共享相同的 Direct2D 设备。 批处理可以提高同时更新多个图面时的性能。

ISurfaceImageSourceNativeWithD2D 接口允许从一个或多个后台线程绘制到 SurfaceImageSourceVirtualSurfaceImageSource,从而允许在 UI 线程外呈现高性能 DirectX。

仅在 ISurfaceImageSourceNativeWithD2D 接口上调用 SetDeviceBeginDrawEndDraw 方法,而不调用 ISurfaceImageSourceNativeIVirtualSurfaceImageSourceNative 接口。

为了支持对多个图面进行批处理更新以提高性能,可以将 ID2D1Device 传递给 SetDevice 方法,而不是 ID3D11Device。 然后 ,BeginDraw 方法可以选择返回共享 ID2D1DeviceContext,应用使用该 ID 为该更新绘制所有内容。

若要从后台线程绘制到图面,必须设置任何 DirectX 资源(包括 Microsoft Direct3D 设备、Direct3D 设备上下文、Direct2D 设备和 Direct2D 设备上下文)才能启用多线程支持。

可以从任何后台线程调用 BeginDrawSuspendDrawResumeDraw 方法,以启用高性能多线程绘图。

始终在 UI 线程上调用 EndDraw 方法,以便将更新 DirectX 内容与当前 XAML UI 线程帧同步。 可以在后台线程上调用 BeginDraw ,在后台线程上完成绘制后调用 SuspendDraw ,在 UI 线程上调用 EndDraw

使用 SuspendDrawResumeDraw 在任何后台或 UI 线程上暂停和恢复绘图。

处理 SurfaceContentsLost 事件以确定何时需要重新创建在系统重置 GPU 时可能会丢失的内容。

要求

   
最低受支持的客户端 Windows 8.1 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 windows.ui.xaml.media.dxinterop.h

另请参阅

DirectX 和 XAML 互操作

IUnknown

SurfaceContentsLost

SurfaceImageSource

VirtualSurfaceImageSource