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