在c#中复制原始像素数据
本文关键字:像素 像素数 数据 原始 复制 | 更新日期: 2023-09-27 18:11:30
我正在尝试将位图的像素复制到DirectX纹理中。它很容易得到IntPtr的从两者,但我如何有效地复制像素数据?
var data = FBitmap.LockBits(..)
var rect = texture.LockRectangle(0, LockFlags.None);
IntPtr from = data.Scan0;
IntPtr to = rect.Data.DataPointer;
//copy data
texture.UnlockRectangle(0);
FBitmap.UnlockBits(data);
我尝试使用Marshal。复制,但它需要像素作为一个数组,我想避免另一个复制。
你可以使用Windows API CopyMemory - Alias " rtlmovemmemory "。比所有LockBits的东西快多了…
http://www.pinvoke.net/default.aspx/urlmon/CopyMemory.html如果你谈论的是那种每个CPU周期都计数的边缘效率,你最好直接使用数据指针和unsafe
代码。
没有真正快速的方法将平面数组映射到像Array
这样的实际托管对象上,你必须一个字节一个字节地复制像素数据。