/// <summary> /// /// </summary> public unsafe void CopyImageToBuffer(SharpVk.Image sourceImage, SharpVk.ImageLayout sourceImageLayout, SharpVk.Buffer destinationBuffer, SharpVk.BufferImageCopy[] regions) { try { SharpVk.BufferImageCopy *marshalledRegions = default(SharpVk.BufferImageCopy *); if (regions != null) { var fieldPointer = (SharpVk.BufferImageCopy *)(Interop.HeapUtil.AllocateAndClear <SharpVk.BufferImageCopy>(regions.Length).ToPointer()); for (int index = 0; index < (uint)(regions.Length); index++) { fieldPointer[index] = regions[index]; } marshalledRegions = fieldPointer; } else { marshalledRegions = null; } Interop.Commands.vkCmdCopyImageToBuffer(this.handle, sourceImage?.handle ?? default(SharpVk.Interop.Image), sourceImageLayout, destinationBuffer?.handle ?? default(SharpVk.Interop.Buffer), (uint)(regions?.Length ?? 0), marshalledRegions); } finally { Interop.HeapUtil.FreeAll(); } }
public static extern void vkCmdCopyImageToBuffer(SharpVk.Interop.CommandBuffer commandBuffer, SharpVk.Interop.Image sourceImage, SharpVk.ImageLayout sourceImageLayout, SharpVk.Interop.Buffer destinationBuffer, uint regionCount, SharpVk.BufferImageCopy *regions);
public static extern void vkCmdCopyBufferToImage(SharpVk.Interop.CommandBuffer commandBuffer, SharpVk.Interop.Buffer sourceBuffer, SharpVk.Interop.Image destinationImage, SharpVk.ImageLayout destinationImageLayout, uint regionCount, SharpVk.BufferImageCopy *regions);