ID2D1RenderTarget_CreateSharedBitmap

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

ID2D1RenderTarget_CreateSharedBitmap this, riid, data, bitmapProperties, bitmap

this : [comobj] ID2D1RenderTarget インターフェースの COM オブジェクト変数
riid : [var] 型: REFIID ソースデータを提供するオブジェクトのインターフェース ID。
data : [intptr] 型: void* 新しい ID2D1Bitmap と共有するデータを含む ID2D1Bitmap、IDXGISurface、または IWICBitmapLock。詳細は Remarks を参照。
bitmapProperties : [var] 型: D2D1_BITMAP_PROPERTIES* 作成するビットマップのピクセル形式と DPI。ピクセル形式の DXGI_FORMAT 部分は data の DXGI_FORMAT と一致している必要がある(アルファモードは一致していなくてもよい)。不一致を避けるには NULL または D2D1::PixelFormat ヘルパー関数から得た値を渡せる。DPI 設定は data と一致している必要はない。dpiX と dpiY がいずれも 0.0f の場合はレンダーターゲットの DPI が使用される。
bitmap : [comobj] 型: ID2D1Bitmap** このメソッドが戻ると、新しいビットマップへのポインターのアドレスが格納される。このパラメーターは未初期化で渡される。

(プラグイン / モジュール : com_misc.dll)

解説

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

[戻り値]
型: HRESULT このメソッドが成功した場合 S_OK を返す。そうでなければ
[**HRESULT**](/windows/desktop/com/structure-of-com-error-codes)
エラーコードを返す。

[備考]
CreateSharedBitmap メソッドはビットマップデータを効率よく再利用するのに便利で、Direct3D
との相互運用にも使える。ID2D1Bitmap の共有 リソース互換性のあるレンダーターゲットで作成された ID2D1Bitmap
を渡すことで、そのレンダーターゲットとビットマップを共有できる。元の ID2D1Bitmap とこのメソッドで作成される新しい
ID2D1Bitmap はともに同じビットマップデータを指す。レンダーターゲットリソースをいつ共有できるかについては Resources
Overview の Sharing Render Target Resources セクションを参照。既存のビットマップのデータを新しい
DPI またはアルファモードで再解釈するためにこのメソッドを使うこともできる。例えばビットマップアトラスの場合、ID2D1Bitmap
に複数のサブ画像が含まれ、それぞれ異なる D2D1_ALPHA_MODE (D2D1_ALPHA_MODE_PREMULTIPLIED
または D2D1_ALPHA_MODE_IGNORE) でレンダリングされるべきであることがある。CreateSharedBitmap
を使えばビットマップを別のコピーとしてメモリに読み込み直すことなく、望むアルファモードで再解釈できる。IDXGISurface の共有
DXGI サーフェイスレンダーターゲット(CreateDxgiSurfaceRenderTarget メソッドで作成された
ID2D1RenderTarget オブジェクト)を使用している場合、IDXGISurface サーフェイスを
CreateSharedBitmap に渡すことでビデオメモリを Direct3D と共有し、Direct3D コンテンツを
ID2D1Bitmap として操作できる。Resources Overview で説明されているとおり、レンダーターゲットと
IDXGISurface は同じ Direct3D デバイスを使用していなければならない。
同様に IDXGISurface は Supported Pixel Formats and Alpha Modes
に記載されているサポート対象のピクセル形式とアルファモードのいずれかを使用していなければならない。Direct3D
との相互運用の詳細については Direct2D and Direct3D Interoperability Overview
を参照。IWICBitmapLock の共有 IWICBitmapLock は WIC
ビットマップの内容を格納し、同時アクセスから保護する。IWICBitmapLock を CreateSharedBitmap
に渡すことで、IWICBitmapLock に既に格納されているビットマップデータを指す ID2D1Bitmap
を作成できる。CreateSharedBitmap で IWICBitmapLock
を使用するには、レンダーターゲットはソフトウェアレンダリングを使用していなければならない。レンダーターゲットにソフトウェアレンダリングを強制するには、レンダーターゲット作成時に使う
D2D1_RENDER_TARGET_PROPERTIES 構造体の type フィールドを
D2D1_RENDER_TARGET_TYPE_SOFTWARE
に設定する。既存のレンダーターゲットがソフトウェアレンダリングを使用しているかどうかを確認するには IsSupported
メソッドを使用する。

情報

プラグイン / モジュールcom_misc.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_com_misc_gen2.hs