public ComputeBuffer(ComputeContext context, ComputeMemoryFlags flags, T[] data) { GCHandle dataPtr = GCHandle.Alloc(data, GCHandleType.Pinned); try { handle = CL10.CreateBuffer(context.handle, flags, new IntPtr(Unsafe.SizeOf <T>() * data.Length), dataPtr.AddrOfPinnedObject(), out _); } finally { dataPtr.Free(); } Init(); }
public ComputeBuffer(ComputeContext context, ComputeMemoryFlags flags, long count, IntPtr dataPtr) { handle = CL10.CreateBuffer(context.handle, flags, new IntPtr(Unsafe.SizeOf <T>() * count), dataPtr, out _); Init(); }