Exemple #1
0
        public void CmdCopyImage(IMgImage srcImage, MgImageLayout srcImageLayout, IMgImage dstImage, MgImageLayout dstImageLayout, MgImageCopy[] pRegions)
        {
            var bSrcImage = (VkImage)srcImage;

            Debug.Assert(bSrcImage != null);

            var bDstImage = (VkImage)dstImage;

            Debug.Assert(bDstImage != null);


            var handle = GCHandle.Alloc(pRegions, GCHandleType.Pinned);

            try
            {
                unsafe
                {
                    var regionCount = (uint)pRegions.Length;
                    var region      = handle.AddrOfPinnedObject();

                    MgImageCopy *regions = (MgImageCopy *)region.ToPointer();
                    Interops.vkCmdCopyImage(this.Handle, bSrcImage.Handle, (VkImageLayout)srcImageLayout, bDstImage.Handle, (VkImageLayout)dstImageLayout, regionCount, regions);
                }
            }
            finally
            {
                handle.Free();
            }
        }