3

我有一个视频采集卡,它通过定期用图像数据填充用户指定的缓冲区(给定的内存地址)来工作。这在 C++ 中对我有用,因为我可以给它一个 Surface.lpSurface 指针地址,并且采集卡驱动程序会自动在每一帧用新的图像数据填充它,在这些数据上我可以翻转()并获取新图像,从而导致一个漂亮干净的视频源。

问题是我正在移植到 C# 并且我需要能够做同样的事情,但是 DirectDraw.Surface 的托管版本没有用于获取表面内存区域的内存地址的方法/属性。我只需要这个地址,有没有办法使用 C# 获取它?

4

1 回答 1

1

如果您指的是 MDX,我已经有一段时间没有使用它了,所以这可能完全是胡说八道,但 Surface 上应该有一个“锁定”方法可以访问字节,但它可能比你习惯直接访问底层指针的速度要慢一些......

您也许可以将您的项目/类标记为“不安全”,然后访问本机 DX 例程以通过 pinvoke 获取指针?然后,代码的不安全部分应该能够直接访问数据。正确的?

对不起,如果这个回复是无用的废话。就像我说的,我已经有一段时间没有使用 DirectShow / MDX 了。也许这会提供一些谷歌素材,或者激发你的一些想法。

于 2011-02-15T19:05:23.350 回答