如何判断SharpDX.Direct2D1.Bitmap的内存使用情况?

How to tell memory usage of SharpDX.Direct2D1.Bitmap?

提问人:moqube 提问时间:9/27/2023 最后编辑:DarkBeemoqube 更新时间:9/28/2023 访问量:37

问:

我正在将一堆图像加载为位图(类型为 SharpDX.Direct2D1.Bitmap),并希望在图像占用一定内存量(在我的情况下为 4gb)时停止加载更多图像。 为了告诉使用的内存,我拥有的函数是宽度 * 高度 * 4(因为它是 rgba)。 当对 System.Drawing.Bitmap 使用该方法并使用任务管理器进行检查时,它使用的 4GB 多一点,这是预期的,因为位图并不是唯一使用内存的东西。 但是,当使用 SharpDX.Direct2D1.Bitmap 时,它总共只使用 350mb。 由于图像仍然正确显示,我可以得出结论,没有丢失任何数据,这肯定意味着它被压缩了。 但是,我不知道如何判断在这种情况下它使用了多少内存。 虽然这不是一个关键问题,但由于它使用的内存比预期的要少,我想利用这一事实。

那么,有谁知道如何判断 SharpDX.Direct2D1.Bitmap 使用了多少内存?

编辑:事实证明,它被加载到GPU内存中。我会将其标记为已解决,但不知道如何解决。谢谢@SimonMourier

C# Direct2D SharpDX

评论

1赞 Simon Mourier 9/27/2023
Direct2D 位图由 GPU 加载,而不是像 GDI/GDI+ 位图那样由 CPU 加载(这并非特定于 SharpDX)。你检查过GPU的内存吗?
0赞 JonasH 9/27/2023
GPU 上的图像可能具有 mipmap 和/或使用纹理压缩,压缩通常会将大小减小 4 倍的固定系数。我不知道 SharpDX 是否自动使用它,或者它是否只存储图像字节。大小计算应具体为 ,即使它可能会产生相同的值。另请注意,SharpDX 自 2019 年以来一直没有维护。stride * height
0赞 moqube 9/27/2023
@SimonMourier你是对的!当检查GPU内存时,我得到了我所期望的!谢谢
0赞 Simon Mourier 9/27/2023
如果你开心,就回答自己

答:

0赞 moqube 9/27/2023 #1

事实证明,它被加载到 GPU 内存中。谢谢@SimonMourier

评论

0赞 Kelechi Daniels 10/2/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。