예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }