【发布时间】:2011-10-14 18:43:43
【问题描述】:
我正在尝试将位图的像素复制到 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.Copy,但它需要将像素作为数组,我当然想避免另一个副本。
【问题讨论】:
-
如果你只是想将图像字节分配给纹理的地址空间,你需要一个位图吗?你能从任何地方读取图像作为二进制数据然后复制吗?
-
我需要复制数据,因为有一个 SVG 渲染器将其像素渲染到位图中。然后在 3d 环境中绘制纹理。