From 73160af503ada094c713881188d5967fd3612560 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Wed, 6 Mar 2024 11:58:52 +0900 Subject: [PATCH] WIP impl "Retrieving the swap chain images" TODO: "Image views" https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Image_views --- src/main.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main.rs b/src/main.rs index b3d97e2..ebe488c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -141,6 +141,9 @@ struct VulkanApp { graphics_queue: ffi::VkQueue, present_queue: ffi::VkQueue, swap_chain: ffi::VkSwapchainKHR, + swap_chain_images: Vec, + swap_chain_image_format: ffi::VkFormat, + swap_chain_extent: ffi::VkExtent2D, } impl VulkanApp { @@ -155,6 +158,9 @@ impl VulkanApp { graphics_queue: std::ptr::null_mut(), present_queue: std::ptr::null_mut(), swap_chain: std::ptr::null_mut(), + swap_chain_images: Vec::new(), + swap_chain_image_format: 0, + swap_chain_extent: unsafe { std::mem::zeroed() }, } } @@ -739,6 +745,26 @@ impl VulkanApp { if result != ffi::VkResult_VK_SUCCESS { panic!("Failed to create swap chain!"); } + + unsafe { + ffi::vkGetSwapchainImagesKHR( + self.device, + self.swap_chain, + std::ptr::addr_of_mut!(image_count), + std::ptr::null_mut(), + ); + self.swap_chain_images + .resize(image_count as usize, std::ptr::null_mut()); + ffi::vkGetSwapchainImagesKHR( + self.device, + self.swap_chain, + std::ptr::addr_of_mut!(image_count), + self.swap_chain_images.as_mut_ptr(), + ); + } + + self.swap_chain_image_format = swap_chain_support.formats[surface_format_idx].format; + self.swap_chain_extent = extent; } }