ID2D1RenderTarget::CreateSharedBitmap-Methode (d2d1.h)

Erstellt eine ID2D1Bitmap , deren Daten für eine andere Ressource freigegeben werden.

Syntax

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

Parameter

riid

Typ: REFIID

Die Schnittstellen-ID des Objekts, das die Quelldaten liefert.

[in, out] data

Typ: void*

Eine ID2D1Bitmap, IDXGISurface oder ein IWICBitmapLock , das die Daten enthält, die mit der neuen ID2D1Bitmap freigegeben werden sollen. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

[in, optional] bitmapProperties

Typ: D2D1_BITMAP_PROPERTIES*

Das Pixelformat und dpi der zu erstellenden Bitmap. Der DXGI_FORMAT Teil des Pixelformats muss mit der DXGI_FORMAT der Daten übereinstimmen, andernfalls schlägt die Methode fehl, aber die Alphamodi müssen nicht übereinstimmen. Um einen Konflikt zu verhindern, können Sie NULL oder den Wert übergeben, der von der Hilfsfunktion D2D1::P ixelFormat abgerufen wurde. Die DPI-Einstellungen müssen nicht mit denen der Daten übereinstimmen. Wenn sowohl dpiX als auch dpiY 0,0f sind, wird der DPI-Wert des Renderziels verwendet.

[out] bitmap

Typ: ID2D1Bitmap**

Wenn diese Methode zurückgibt, enthält die Adresse eines Zeigers auf die neue Bitmap. Dieser Parameter wird nicht initialisiert übergeben.

Rückgabewert

Typ: HRESULT

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.

Hinweise

Die CreateSharedBitmap-Methode ist nützlich für die effiziente Wiederverwendung von Bitmapdaten und kann auch verwendet werden, um die Interoperabilität mit Direct3D zu gewährleisten.

Freigeben einer ID2D1Bitmap

Durch Übergeben einer ID2D1Bitmap , die von einem ressourcenkompatiblen Renderziel erstellt wurde, können Sie eine Bitmap für dieses Renderziel freigeben. sowohl die ursprüngliche ID2D1Bitmap als auch die neue ID2D1Bitmap , die von dieser Methode erstellt wurden, verweisen auf die gleichen Bitmapdaten. Weitere Informationen dazu, wann Renderzielressourcen freigegeben werden können, finden Sie im Abschnitt Freigabe von Renderzielressourcen der Ressourcenübersicht.

Sie können diese Methode auch verwenden, um die Daten einer vorhandenen Bitmap neu zu interpretieren und einen neuen DPI- oder Alphamodus anzugeben. Bei einem Bitmapatlas kann eine ID2D1Bitmap beispielsweise mehrere Unterbilder enthalten, von denen jedes mit einem anderen D2D1_ALPHA_MODE (D2D1_ALPHA_MODE_PREMULTIPLIED oder D2D1_ALPHA_MODE_IGNORE) gerendert werden sollte. Sie können die CreateSharedBitmap-Methode verwenden, um die Bitmap mit dem gewünschten Alphamodus neu zu interpretieren, ohne eine separate Kopie der Bitmap in den Arbeitsspeicher laden zu müssen.

Freigeben einer IDXGISurface

Bei Verwendung eines DXGI-Surface-Renderziels (ein ID2D1RenderTarget-Objekt , das von der CreateDxgiSurfaceRenderTarget-Methode erstellt wurde), können Sie eine IDXGISurface-Oberfläche an die CreateSharedBitmap-Methode übergeben, um Videospeicher mit Direct3D freizugeben und Direct3D-Inhalte als ID2D1Bitmap zu bearbeiten. Wie in der Ressourcenübersicht beschrieben, müssen das Renderziel und idXGISurface dasselbe Direct3D-Gerät verwenden.

Beachten Sie auch, dass IDXGISurface eines der unterstützten Pixelformate und Alphamodi verwenden muss, die unter Unterstützte Pixelformate und Alphamodi beschrieben sind.

Weitere Informationen zur Interoperabilität mit Direct3D finden Sie in der Übersicht über die Direct2D- und Direct3D-Interoperabilität.

Freigeben eines IWICBitmapLock

Ein IWICBitmapLock speichert den Inhalt einer WIC-Bitmap und schützt ihn vor gleichzeitigen Zugriffen. Durch Übergeben eines IWICBitmapLock an die CreateSharedBitmap-Methode können Sie eine ID2D1Bitmap erstellen, die auf die Bitmapdaten verweist, die bereits im IWICBitmapLock gespeichert sind.

Um einen IWICBitmapLock mit der CreateSharedBitmap-Methode zu verwenden, muss das Renderziel Softwarerendering verwenden. Um zu erzwingen, dass ein Renderziel Softwarerendering verwendet, legen Sie auf D2D1_RENDER_TARGET_TYPE_SOFTWARE das Typfeld der D2D1_RENDER_TARGET_PROPERTIES-Struktur fest, die Sie zum Erstellen des Renderziels verwenden. Verwenden Sie die IsSupported-Methode , um zu überprüfen, ob ein vorhandenes Renderziel Softwarerendering verwendet.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile d2d1.h
Bibliothek D2d1.lib
DLL D2d1.dll

Weitere Informationen

Übersicht über die Interoperabilität von Direct2D und Direct3D

ID2D1RenderTarget

IDXGISurface

IWICBitmapLock

Übersicht über Ressourcen

Unterstützte Pixelformate und Alpha-Modi