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); }
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); }
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); }