Esempio n. 1
0
        protected override void PlatformDispose()
        {
            _scFB.Dispose();
            vkDestroySurfaceKHR(_instance, _surface, null);
            if (_debugCallbackFunc != null)
            {
                _debugCallbackFunc = null;
                FixedUtf8String debugExtFnName = "vkDestroyDebugReportCallbackEXT";
                IntPtr          destroyFuncPtr = vkGetInstanceProcAddr(_instance, debugExtFnName);
                vkDestroyDebugReportCallbackEXT_d destroyDel
                    = Marshal.GetDelegateForFunctionPointer <vkDestroyDebugReportCallbackEXT_d>(destroyFuncPtr);
                VkResult debugDestroyResult = destroyDel(_instance, _debugCallbackHandle, null);
                CheckResult(debugDestroyResult);
            }

            vkDestroyDescriptorPool(_device, _descriptorPool, null);
            vkDestroyCommandPool(_device, _graphicsCommandPool, null);
            vkDestroyFence(_device, _imageAvailableFence, null);

            _memoryManager.Dispose();

            VkResult result = vkDeviceWaitIdle(_device);

            CheckResult(result);
            vkDestroyDevice(_device, null);
            vkDestroyInstance(_instance, null);
        }
Esempio n. 2
0
 protected override void PlatformDispose()
 {
     _scInfo.Dispose();
     if (_debugCallbackFunc != null)
     {
         _debugCallbackFunc = null;
         FixedUtf8String debugExtFnName = "vkDestroyDebugReportCallbackEXT";
         IntPtr          destroyFuncPtr = vkGetInstanceProcAddr(_instance, debugExtFnName);
         vkDestroyDebugReportCallbackEXT_d destroyDel
             = Marshal.GetDelegateForFunctionPointer <vkDestroyDebugReportCallbackEXT_d>(destroyFuncPtr);
         destroyDel.Invoke(_instance, _debugCallbackHandle, null);
     }
     vkDestroyInstance(_instance, null);
 }
Esempio n. 3
0
        public void CleanUp()
        {
            VulkanNative.vkDeviceWaitIdle(vkDevice);

            VulkanNative.vkDestroySemaphore(vkDevice, vkImageAvailableSemaphore, null);
            VulkanNative.vkDestroySemaphore(vkDevice, vkRenderFinishedSemaphore, null);

            VulkanNative.vkDestroyCommandPool(vkDevice, vkCommandPool, null);

            foreach (var framebuffer in vkSwapChainFramebuffers)
            {
                VulkanNative.vkDestroyFramebuffer(vkDevice, framebuffer, null);
            }

            VulkanNative.vkDestroyPipeline(vkDevice, vkGraphicsPipeline, null);
            VulkanNative.vkDestroyPipelineLayout(vkDevice, vkPipelineLayout, null);
            VulkanNative.vkDestroyRenderPass(vkDevice, vkRenderPass, null);

            foreach (var imageview in vkSwapChainImageViews)
            {
                VulkanNative.vkDestroyImageView(vkDevice, imageview, null);
            }

            VulkanNative.vkDestroySwapchainKHR(vkDevice, vkSwapChain, null);
            VulkanNative.vkDestroyDevice(vkDevice, null);

            VulkanNative.vkDestroySurfaceKHR(vkInstance, vkSurface, null);

            this.debugCallbackFunc = null;
            IntPtr destroyFuncPtr = VulkanNative.vkGetInstanceProcAddr(this.vkInstance, "vkDestroyDebugReportCallbackEXT".ToPointer());
            vkDestroyDebugReportCallbackEXT_d destroyDel = Marshal.GetDelegateForFunctionPointer <vkDestroyDebugReportCallbackEXT_d>(destroyFuncPtr);

            destroyDel(this.vkInstance, this.debugCallbackHandle, null);

            VulkanNative.vkDestroyInstance(vkInstance, null);
        }