public static void Read(this GraphicBuffer buffer, byte[] data, int offset, int bytes) { unsafe { GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); var ptr = ClrRuntime.Runtime.GetPointer(data, 0); try { buffer.Read(ptr, offset, bytes); } finally { handle.Free(); } } }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data">array</param> /// <param name="offset">Offset in bytes to start reading</param> public static void Read <T>(this GraphicBuffer buffer, T[] data, int offset = 0) where T : struct { unsafe { GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); var ptr = ClrRuntime.Runtime.GetPointer(data, 0); try { buffer.Read(ptr, offset, ClrRuntime.Runtime.SizeOf <T>() * data.Length); } finally { handle.Free(); } } }
public static T[] ToArray <T>(this GraphicBuffer buffer) where T : struct { T[] data = new T[buffer.SizeInBytes / ClrRuntime.Runtime.SizeOf <T>()]; buffer.Read(data); return(data); }