2

我一直在编写自己的函数库来访问一些新的 Direct2D Windows 库。特别是,我一直在研究 ID2D1Bitmap 接口。我想编写一个函数来返回指向位图数据开头的指针(用于编辑特定像素,或自定义编码或我将来可能希望的任何其他内容)。不幸的是......前面的问题......

我似乎找不到从 ID2D1Bitmap 接口访问原始像素数据的方法。

有谁知道如何访问它?我的一位朋友建议将位图绘制到表面并从那里提取位图数据。我不知道这是否可行。它肯定看起来效率低下,我不知道要使用哪种表面。

任何帮助表示赞赏。(尤其是 c++,但我认为代码在语言之间不会有太大差异)

(我知道我可以直接从文件中读取数据,但我使用的是 WIC 解码器,这意味着它可以是任意数量的无法辨认的格式)

4

2 回答 2

1

通常,您无法访问ID2D1Bitmap数据。将其视为仅 GPU 的数据。但是,根据位图的创建方式,您可以使用其他接口访问数据,但存在一些限制。

由于您的位图由 支持IWICBitmap,因此您使用Lock。[ (更大的例子:如何修改位图源的像素) ]

如果位图由ID3D11Texture2D您支持,则使用Map

如果IDXGISurface您可以使用GetDC

于 2014-01-10T15:18:20.153 回答
0

Since you're using the WIC decoder, you should be able to use IWICBitmap::Lock directly to get the bitmap data.

于 2010-08-16T21:51:58.323 回答