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 设置 Microsoft DirectX 图形基础结构 (使用 D3D11_CREATE_DEVICE_BGRA_SUPPORT 创建的 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 绘图,允许在同一批中绘制多个不同的 SurfaceImageSource 或 VirtualSurfaceImageSource 对象,只要它们共享相同的 Direct2D 设备。 批处理可以提高同时更新多个图面时的性能。
ISurfaceImageSourceNativeWithD2D 接口允许从一个或多个后台线程绘制到 SurfaceImageSource 或 VirtualSurfaceImageSource,从而允许在 UI 线程外呈现高性能 DirectX。
仅在 ISurfaceImageSourceNativeWithD2D 接口上调用 SetDevice、BeginDraw 和 EndDraw 方法,而不调用 ISurfaceImageSourceNative 或 IVirtualSurfaceImageSourceNative 接口。
为了支持对多个图面进行批处理更新以提高性能,可以将 ID2D1Device 传递给 SetDevice 方法,而不是 ID3D11Device。 然后 ,BeginDraw 方法可以选择返回共享 ID2D1DeviceContext,应用使用该 ID 为该更新绘制所有内容。
若要从后台线程绘制到图面,必须设置任何 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 |