/// <summary> /// /// </summary> public unsafe void BlitImage(SharpVk.Image sourceImage, SharpVk.ImageLayout sourceImageLayout, SharpVk.Image destinationImage, SharpVk.ImageLayout destinationImageLayout, SharpVk.ImageBlit[] regions, SharpVk.Filter filter) { try { SharpVk.Interop.ImageBlit *marshalledRegions = default(SharpVk.Interop.ImageBlit *); if (regions != null) { var fieldPointer = (SharpVk.Interop.ImageBlit *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.ImageBlit>(regions.Length).ToPointer()); for (int index = 0; index < (uint)(regions.Length); index++) { regions[index].MarshalTo(&fieldPointer[index]); } marshalledRegions = fieldPointer; } else { marshalledRegions = null; } Interop.Commands.vkCmdBlitImage(this.handle, sourceImage?.handle ?? default(SharpVk.Interop.Image), sourceImageLayout, destinationImage?.handle ?? default(SharpVk.Interop.Image), destinationImageLayout, (uint)(regions?.Length ?? 0), marshalledRegions, filter); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// /// </summary> internal unsafe void MarshalTo(SharpVk.Interop.ImageBlit *pointer) { pointer->SourceSubresource = this.SourceSubresource; pointer->SourceOffsets_0 = this.SourceOffsets.Item1; pointer->SourceOffsets_1 = this.SourceOffsets.Item2; pointer->DestinationSubresource = this.DestinationSubresource; pointer->DestinationOffsets_0 = this.DestinationOffsets.Item1; pointer->DestinationOffsets_1 = this.DestinationOffsets.Item2; }
/// <summary> /// /// </summary> internal static unsafe ImageBlit MarshalFrom(SharpVk.Interop.ImageBlit *pointer) { ImageBlit result = default(ImageBlit); result.SourceSubresource = pointer->SourceSubresource; result.SourceOffsets = (pointer->SourceOffsets_0, pointer->SourceOffsets_1); result.DestinationSubresource = pointer->DestinationSubresource; result.DestinationOffsets = (pointer->DestinationOffsets_0, pointer->DestinationOffsets_1); return(result); }
public static extern void vkCmdBlitImage(SharpVk.Interop.CommandBuffer commandBuffer, SharpVk.Interop.Image sourceImage, SharpVk.ImageLayout sourceImageLayout, SharpVk.Interop.Image destinationImage, SharpVk.ImageLayout destinationImageLayout, uint regionCount, SharpVk.Interop.ImageBlit *regions, SharpVk.Filter filter);
/// <summary> /// /// </summary> internal unsafe void MarshalTo(SharpVk.Interop.ImageBlit *pointer) { pointer->SourceSubresource = this.SourceSubresource; pointer->DestinationSubresource = this.DestinationSubresource; }