ID2D1RenderTarget::CreateSharedBitmap メソッド

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

構文

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

パラメーター

  • riid
    REFIID ソース データを提供するオブジェクトのインターフェイス ID。
  • data [in, out]
    void 新しい ID2D1Bitmap と共有するデータを含む ID2D1BitmapIDXGISurface、または IWICBitmapLock。詳細については、「解説」を参照してください。
  • bitmapProperties [in, optional]
    D2D1_BITMAP_PROPERTIES 作成するビットマップのピクセル形式と DPI。ピクセル形式の DXGI_FORMAT 部分は、dataDXGI_FORMAT と一致する必要があります。一致しない場合、メソッドは失敗します。ただし、アルファ モードは一致する必要がありません。不一致を防ぐには、NULL を渡すか、D2D1::PixelFormat ヘルパー関数から取得された値を渡すことができます。DPI 設定は、data の DPI 設定と一致する必要はありません。dpiXdpiY の両方 が 0.0f の場合、既定の DPI である 96 が使用されます。
  • bitmap [out]
    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_TYPE_SOFTWARE に、レンダー ターゲットの作成に使用する D2D1_RENDER_TARGET_PROPERTIES 構造体の type フィールドを設定します。既存のレンダー ターゲットがソフトウェア レンダリングを使用するかどうかを確認するには、IsSupported メソッドを使用します。

要件

クライアントの最小要件

Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム

サーバーの最小要件

Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム

ヘッダー

D2d1.h

ライブラリ

D2d1.lib

DLL

D2d1.dll

参照

ID2D1RenderTarget

IWICBitmapLock

IDXGISurface

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

リソースの概要

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