次の方法で共有


ID2D1RenderTarget::CreateSharedBitmap メソッド (d2d1.h)

データを別のリソースと共有する ID2D1Bitmap を作成します。

構文

HRESULT CreateSharedBitmap(
                 REFIID                       riid,
  [in, out]      void                         *data,
  [in, optional] const D2D1_BITMAP_PROPERTIES *bitmapProperties,
  [out]          ID2D1Bitmap                  **bitmap
);

パラメーター

riid

型: REFIID

ソース データを提供するオブジェクトのインターフェイス ID。

[in, out] data

型: void*

新しい ID2D1Bitmap と共有するデータを含む ID2D1BitmapIDXGISurface、または IWICBitmapLock。 詳細については、「解説」を参照してください。

[in, optional] bitmapProperties

種類: D2D1_BITMAP_PROPERTIES*

作成するビットマップのピクセル形式と DPI。 ピクセル形式のDXGI_FORMAT部分はデータDXGI_FORMATと一致する必要があります。メソッドは失敗しますが、アルファ モードは一致する必要はありません。 不一致を防ぐために、 NULL または D2D1::P ixelFormat ヘルパー関数から取得した値を渡すことができます。 DPI 設定は 、データの設定と一致する必要はありません。 dpiXdpiY の両方が 0.0f の場合、レンダー ターゲットの DPI が使用されます。

[out] bitmap

種類: ID2D1Bitmap**

このメソッドから制御が戻るときに、新しいビットマップへのポインターのアドレスが格納されます。 このパラメーターは初期化せずに渡されます。

戻り値

型: HRESULT

このメソッドは、成功すると S_OK を返します。 それ以外の場合は、 HRESULT エラー コードが返されます。

注釈

CreateSharedBitmap メソッドは、ビットマップ データを効率的に再利用するのに役立ち、Direct3D との相互運用性を提供するためにも使用できます。

ID2D1Bitmap の共有

リソース互換のレンダー ターゲットによって作成された ID2D1Bitmap を渡すことで、そのレンダー ターゲットとビットマップを共有できます。このメソッドによって作成された元の ID2D1Bitmap と新しい ID2D1Bitmap の 両方が、同じビットマップ データを指します。 レンダー ターゲット リソースを共有できるタイミングの詳細については、「 リソースの概要」の「レンダー ターゲット リソースの共有」セクションを参照してください。

また、このメソッドを使用して、既存のビットマップのデータを再解釈し、新しい DPI またはアルファ モードを指定することもできます。 たとえば、ビットマップ アトラスの場合、 ID2D1Bitmap には複数のサブイメージが含まれている場合があり、それぞれが異なる D2D1_ALPHA_MODE (D2D1_ALPHA_MODE_PREMULTIPLIED または D2D1_ALPHA_MODE_IGNORE) でレンダリングする必要があります。 CreateSharedBitmap メソッドを使用すると、ビットマップの個別のコピーをメモリに読み込む必要なく、目的のアルファ モードを使用してビットマップを再解釈できます。

IDXGISurface の共有

DXGI サーフェス レンダー ターゲット (CreateDxgiSurfaceRenderTarget メソッドによって作成された ID2D1RenderTarget オブジェクト) を使用する場合は、IDXGISurface サーフェスを CreateSharedBitmap メソッドに渡して、Direct3D とビデオ メモリを共有し、Direct3D コンテンツを ID2D1Bitmap として操作できます。 「リソースの概要」で説明されているように、レンダー ターゲットと IDXGISurface は同じ Direct3D デバイスを使用している必要があります。

また、 IDXGISurface では 、「サポートされているピクセル形式とアルファ モード」で説明されている、 サポートされているピクセル形式とアルファ モードのいずれかを使用する必要があることにも注意してください。

Direct3D との相互運用性の詳細については、「 Direct2D と Direct3D の相互運用性の概要」を参照してください。

IWICBitmapLock の共有

IWICBitmapLock は、WIC ビットマップのコンテンツを格納し、同時アクセスから保護します。 IWICBitmapLockCreateSharedBitmap メソッドに渡すことで、IWICBitmapLock に既に格納されているビットマップ データを指す ID2D1Bitmap を作成できます。

CreateSharedBitmap メソッドで IWICBitmapLock を使用するには、レンダー ターゲットでソフトウェア レンダリングを使用する必要があります。 レンダー ターゲットでソフトウェア レンダリングを強制的に使用するには、レンダー ターゲットの作成に使用するD2D1_RENDER_TARGET_PROPERTIES構造体のフィールドをD2D1_RENDER_TARGET_TYPE_SOFTWAREに設定します。 既存のレンダー ターゲットでソフトウェア レンダリングが使用されているかどうかをチェックするには、IsSupported メソッドを使用します。

要件

要件
サポートされている最小のクライアント Windows 7、Windows Vista SP2 と Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー d2d1.h
Library D2d1.lib
[DLL] D2d1.dll

こちらもご覧ください

Direct2D と Direct3D の相互運用性の概要

ID2D1RenderTarget

IDXGISurface

IWICBitmapLock

リソースの概要

サポートされているピクセル形式とアルファ モード