Интерфейс ISurfaceImageSourceNativeWithD2D (windows.ui.xaml.media.dxinterop.h)
Предоставляет реализацию общей поверхности Microsoft DirectX, которая отображается в SurfaceImageSource или VirtualSurfaceImageSource.
Наследование
Интерфейс ISurfaceImageSourceNativeWithD2D наследуется от интерфейса IUnknown . ISurfaceImageSourceNativeWithD2D также имеет следующие типы элементов:
Методы
Интерфейс ISurfaceImageSourceNativeWithD2D содержит следующие методы.
ISurfaceImageSourceNativeWithD2D::BeginDraw Инициирует обновление связанного surfaceImageSource или VirtualSurfaceImageSource. |
ISurfaceImageSourceNativeWithD2D::EndDraw Метод ISurfaceImageSourceNativeWithD2D::EndDraw (windows.ui.xaml.media.dxinterop.h) закрывает операцию рисования поверхности. |
ISurfaceImageSourceNativeWithD2D::ResumeDraw Возобновите операцию рисования. |
ISurfaceImageSourceNativeWithD2D::SetDevice Задает устройство Microsoft DirectX Graphics Infrastructure (DXGI) или Direct2D, созданное с помощью D3D11_CREATE_DEVICE_BGRA_SUPPORT, которое будет рисовать поверхность. |
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 из одного или нескольких фоновых потоков, что обеспечивает высокопроизводительную отрисовку DirectX вне потока пользовательского интерфейса.
Вызовите методы SetDevice, BeginDraw и EndDraw только в интерфейсе ISurfaceImageSourceNativeWithD2D , но не в интерфейсах ISurfaceImageSourceNative или IVirtualSurfaceImageSourceNative .
Для поддержки пакетной обработки обновлений на нескольких поверхностях для повышения производительности можно передать ID2D1Device методу SetDevice вместо ID3D11Device. Затем метод BeginDraw может при необходимости вернуть общий идентификатор ID2D1DeviceContext, который приложение использует для рисования всего содержимого для этого обновления.
Для рисования на поверхности из фонового потока необходимо задать все ресурсы DirectX, включая устройство Microsoft Direct3D, контекст устройства Direct3D, устройство Direct2D и контекст устройства Direct2D, чтобы включить поддержку многопоточности.
Методы BeginDraw, SuspendDraw и ResumeDraw можно вызывать из любого фонового потока, чтобы обеспечить высокопроизводительное многопоточное рисование.
Всегда вызывайте метод EndDraw в потоке пользовательского интерфейса, чтобы синхронизировать обновление содержимого DirectX с текущим кадром потока пользовательского интерфейса XAML. Вы можете вызвать BeginDraw в фоновом потоке, вызвать SuspendDraw после завершения рисования в фоновом потоке и вызвать EndDraw в потоке пользовательского интерфейса.
Используйте SuspendDraw и ResumeDraw , чтобы приостановить и возобновить рисование в любом фоновом потоке или потоке пользовательского интерфейса.
Обработайте событие SurfaceContentsLost , чтобы определить, когда необходимо повторно создать содержимое, которое может быть потеряно при сбросе системы GPU.
Требования
Минимальная версия клиента | Windows 8.1 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 R2 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | windows.ui.xaml.media.dxinterop.h |