36 uint32_t p_frame_index) {
37 return m_swapchain_command_buffers[p_frame_index];
40 [[nodiscard]] VkFramebuffer active_framebuffer(uint32_t p_frame)
const {
41 return m_swapchain_framebuffers[p_frame];
44 [[nodiscard]] VkRenderPass swapchain_renderpass()
const {
45 return m_final_renderpass;
48 [[nodiscard]] window_settings settings()
const {
49 return m_window_settings;
52 [[nodiscard]] uint32_t image_size()
const {
return m_image_size; }
54 [[nodiscard]] surface_properties data()
const {
55 return m_surface_properties;
60 void submit(std::span<const VkCommandBuffer> p_command);
62 [[nodiscard]] ::vk::sample_image active_image(uint32_t p_index)
const {
63 return m_swapchain_images[p_index];
66 operator VkSwapchainKHR()
const {
return m_swapchain_handler; }
68 operator VkSwapchainKHR() {
return m_swapchain_handler; }
70 void present(
const uint32_t& p_current_frame);
76 uint32_t select_images_size(
const VkSurfaceCapabilitiesKHR&);
79 vk_physical_driver m_physical{};
81 VkSurfaceKHR m_current_surface_handler =
nullptr;
82 VkSwapchainKHR m_swapchain_handler =
nullptr;
83 VkExtent2D m_swapchain_extent{};
84 window_settings m_window_settings{};
86 uint32_t m_image_size = 0;
88 VkSurfaceKHR m_current_surface =
nullptr;
89 surface_properties m_surface_properties{};
90 std::vector<::vk::command_buffer> m_swapchain_command_buffers{};
91 std::vector<::vk::framebuffer> m_swapchain_framebuffers;
94 std::vector<::vk::sample_image> m_swapchain_images;
95 std::vector<::vk::sample_image> m_swapchain_depth_images;
97 ::vk::renderpass m_final_renderpass;
99 ::vk::device_present_queue m_present_to_queue;