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