Beispiel #1
0
        public void CmdCopyImageToBuffer(IMgImage srcImage, MgImageLayout srcImageLayout, IMgBuffer dstBuffer, MgBufferImageCopy[] pRegions)
        {
            var bSrcImage = (VkImage)srcImage;

            Debug.Assert(bSrcImage != null);
            var bDstBuffer = (VkBuffer)dstBuffer;

            Debug.Assert(bDstBuffer != null);

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

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

                    var pinnedArray = (MgBufferImageCopy *)regionAddress.ToPointer();

                    Interops.vkCmdCopyImageToBuffer(this.Handle, bSrcImage.Handle, srcImageLayout, bDstBuffer.Handle, regionCount, pinnedArray);
                }
            }
            finally
            {
                handle.Free();
            }
        }