Direct2D 不同的图像加载API

问题描述 投票:0回答:1

我目前正在学习 Direct2D,并且我成功地将图像加载到我的测试应用程序中,如下所述:

如何从文件加载位图 (https://learn.microsoft.com/en-us/windows/win32/direct2d/how-to-load-a-direct2d-bitmap-from-a-file) 和 如何从资源加载位图 (https://learn.microsoft.com/en-us/windows/win32/direct2d/how-to-load-a-bitmap-from-a-resource)

但现在我偶然发现了 Direct2D 的新增功能 -> 改进的图像加载 API 中的小节(https://learn.microsoft.com/en-us/windows/win32/direct2d/what-s-new-in-direct2d -for-windows-8-consumer-preview#whats-new-for-windows-10)。

有人可以向我解释为什么这些用于加载图像的新 API 比“如何从文件/资源加载位图”中使用的 API 更好吗?据我了解,这些新函数提供了 D2D1Image 类型,必须将其转换为 D2D1Bitmap 才能被 RenderTarget 使用?

c++ winapi direct2d
1个回答
0
投票

根据文档:支持的像素格式和 Alpha 模式

当您使用 CreateBitmapFromWicBitmap 方法时,您使用 D2D1_BITMAP_PROPERTIES 结构的 PixelFormat 字段(而不是 D2D1_RENDER_TARGET_PROPERTIES 结构的 PixelFormat 成员) 指定新渲染目标的像素格式。必须匹配 WIC 位图源的像素格式。

ID2D1ImageSource 是像素的抽象提供者。有可能 从 WIC(CreateImageSourceFromWic 或 IDXGISurface(CreateImageSourceFromDxgi)。

CreateBitmapFromWicBitmap 必须与

WIC bitmap source
的像素格式匹配。 ID2D1ImageSource 可以从
WIC
IDXGISurface
实例化。从 IDXGISurface 实例化的 ID2D1ImageSource 也支持一些 YUV 像素格式。

创建渲染目标时,必须指定其像素格式。有关每个渲染目标支持的像素格式和 Alpha 模式的列表,请参阅支持的像素格式和 Alpha 模式

当您使用 ID2D1RenderTarget::CreateSharedBitmap 方法时,您使用 要指定的 D2D1_BITMAP_PROPERTIES 结构的 PixelFormat 字段 新渲染目标的像素格式。它必须与像素匹配 ID2D1Bitmap 源的格式。

© www.soinside.com 2019 - 2024. All rights reserved.