public static MemoryBlock AllocateAutoReleaseMemoryBlock(IntPtr data, int size) { var buffer = NativeUtility.Alloc(NativeUtility.MemoryAllocationType.Renderer, size); NativeUtility.CopyMemory(buffer, data, size); var memory = MemoryBlock.MakeRef(buffer, size, buffer, ReleaseHandleCallback); return(memory); }
public unsafe static MemoryBlock AllocateAutoReleaseMemoryBlock <T>(ArraySegment <T> data) where T : unmanaged { var size = data.Count * sizeof(T); var buffer = NativeUtility.Alloc(NativeUtility.MemoryAllocationType.Renderer, size); fixed(T *p = data.Array) NativeUtility.CopyMemory(buffer, (IntPtr)(p + data.Offset), size); var memory = MemoryBlock.MakeRef(buffer, size, buffer, ReleaseHandleCallback); return(memory); }
internal void UpdateTextureData(Texture2D texture, Pixmap pixmap) { var memory = MemoryBlock.MakeRef(pixmap.PixelDataPtr, pixmap.SizeBytes, IntPtr.Zero); texture.Texture.Update2D(0, 0, 0, 0, pixmap.Width, pixmap.Height, memory, pixmap.Stride); }
private void ImplSetData(Pixmap pixmap) { var memory = MemoryBlock.MakeRef(pixmap.PixelDataPtr, pixmap.SizeBytes, IntPtr.Zero); Texture.Update2D(0, 0, 0, 0, pixmap.Width, pixmap.Height, memory, pixmap.Stride); }