예제 #1
0
 /// <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();
     }
 }
예제 #2
0
 public static extern void vkCmdCopyBuffer(SharpVk.Interop.CommandBuffer commandBuffer, SharpVk.Interop.Buffer sourceBuffer, SharpVk.Interop.Buffer destinationBuffer, uint regionCount, SharpVk.BufferCopy *regions);