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 グラフィックス インフラストラクチャ (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 インターフェイスを使用すると、1 つ以上のバックグラウンド スレッドから SurfaceImageSource または VirtualSurfaceImageSource への描画が可能になり、UI スレッドから DirectX のハイ パフォーマンスレンダリングが可能になります。
ISurfaceImageSourceNative または IVirtualSurfaceImageSourceNative インターフェイスではなく、ISurfaceImageSourceNativeWithD2D インターフェイスでのみ SetDevice、BeginDraw、および EndDraw メソッドを呼び出します。
パフォーマンスを向上させるために複数のサーフェスへの更新のバッチ処理をサポートするために、 ID3D11Device ではなく、ID2D1Device を SetDevice メソッド に渡すことができます。 BeginDraw メソッドは、必要に応じて共有 ID2D1DeviceContext を返すことができます。この ID は、アプリがその更新プログラムのすべてのコンテンツを描画するために使用します。
バックグラウンド スレッドからサーフェスに描画するには、Microsoft Direct3D デバイス、Direct3D デバイス コンテキスト、Direct2D デバイス、Direct2D デバイス コンテキストなどの DirectX リソースを設定して、マルチスレッドのサポートを有効にする必要があります。
任意のバックグラウンド スレッドから BeginDraw、 SuspendDraw、 ResumeDraw の各メソッドを呼び出して、ハイ パフォーマンスのマルチスレッド描画を有効にすることができます。
DirectX コンテンツの更新を現在の XAML UI スレッド フレームと同期させるには、常に UI スレッドで EndDraw メソッドを呼び出します。 バックグラウンド スレッドで 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 |