19 static constexpr std::string_view SWAPCHAIN_RENDERTARGET_NAME =
23 static auto New(std::shared_ptr<Context>
const &ctx)
29 render_graph = builder.
compile().value();
34 return swapchain_image_views_;
39 std::shared_ptr<RenderTarget>
const &target) {
40 render_targets_.emplace(name, target);
44 std::function<
void(::vk::CommandBuffer &)>
const &cmd_buf)
48 explicit Renderer(std::shared_ptr<Context>
const &ctx);
51 void end_frame(uint32_t image_index);
55 auto choose_swapchain_format(
56 std::vector<::vk::SurfaceFormatKHR>
const &formats)
57 -> ::vk::SurfaceFormatKHR;
58 auto choose_swapchain_presentation_mode(
59 std::vector<::vk::PresentModeKHR>
const &formats)
60 -> ::vk::PresentModeKHR;
61 auto choose_swapchain_extent(
62 ::vk::SurfaceCapabilitiesKHR
const &surface_capabilities)
65 std::unordered_map<std::string, std::shared_ptr<Pipeline>>
67 std::shared_ptr<Context> ctx_;
68 ::vk::SwapchainKHR swapchain;
69 std::vector<::vk::Image> swapchain_images;
70 std::vector<::vk::ImageView> swapchain_image_views_;
72 std::unordered_map<std::string, std::shared_ptr<RenderTarget>>
75 ::vk::Format swapchain_image_format = ::vk::Format::eB8G8R8Srgb;
76 ::vk::Extent2D swapchain_extent;
78 ::vk::Semaphore image_available;
79 ::vk::Semaphore render_finished;
80 ::vk::Fence in_flight_fence;
82 ::vk::CommandPool command_pool_;
83 ::vk::CommandBuffer one_time_cmd_buffer;