我有一个视频采集卡,它通过周期性地用图像数据填充用户指定的缓冲区(给定的内存地址)来工作。这对我在C++中很有效,因为我只需要给它一个Surface.lpSurface指针地址,采集卡驱动程序会在每一帧自动填充新的图像数据,根据这些数据,我可以翻转()并获得新的图像,从而产生一个漂亮的干净的视频提要。
问题是我要移植到C#,并且我需要能够做同样的事情,但是DirectDraw.Surface的托管版本没有用于获取表面内存区域的内存地址的方法/属性。我所需要的就是这个地址,有没有办法通过C#得到它?
发布于 2011-02-16 03:05:23
如果你指的是MDX,我已经有一段时间没有使用它了,所以这可能完全是胡说八道,但是在Surface上应该有一个"Lock“方法来访问字节,但是它可能比你习惯的直接访问底层指针的速度要慢一点……
您可以将您的项目/类标记为“不安全”,然后通过pinvoke访问本地DX例程来获取指针。然后,代码中不安全的部分应该能够直接访问数据。对吗?
如果这条回复是无用的废话,我很抱歉。就像我说的,我已经有一段时间没有玩DirectShow / MDX了。也许这会为你提供一些谷歌素材,或者激发你的一些想法。
https://stackoverflow.com/questions/4962244
复制相似问题