MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Samples / prepare

Method prepare

framework/rendering/render_context.h:648–691  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

646
647template <vkb::BindingType bindingType>
648inline void RenderContext<bindingType>::prepare(size_t thread_count, typename vkb::rendering::RenderTarget<bindingType>::CreateFunc create_render_target_func_)
649{
650 if constexpr (bindingType == vkb::BindingType::Cpp)
651 {
652 create_render_target_func = create_render_target_func_;
653 }
654 else
655 {
656 create_render_target_func = *reinterpret_cast<RenderTargetCpp::CreateFunc *>(&create_render_target_func_);
657 }
658
659 device.get_handle().waitIdle();
660
661 if (swapchain)
662 {
663 surface_extent = swapchain->get_extent();
664
665 vk::Extent3D extent{surface_extent.width, surface_extent.height, 1};
666
667 for (auto &image_handle : swapchain->get_images())
668 {
669 vkb::core::HPPImage swapchain_image{device, image_handle, extent, swapchain->get_format(), swapchain->get_usage()};
670 auto render_target = create_render_target_func(std::move(swapchain_image));
671 frames.emplace_back(std::make_unique<vkb::rendering::RenderFrameCpp>(device, std::move(render_target), thread_count));
672 }
673 }
674 else
675 {
676 // Otherwise, create a single RenderFrame
677 swapchain = nullptr;
678
679 auto color_image = vkb::core::HPPImage{device,
680 vk::Extent3D{surface_extent.width, surface_extent.height, 1},
681 DEFAULT_VK_FORMAT, // We can use any format here that we like
682 vk::ImageUsageFlagBits::eColorAttachment | vk::ImageUsageFlagBits::eTransferSrc,
683 VMA_MEMORY_USAGE_GPU_ONLY};
684
685 std::unique_ptr<RenderTargetCpp> render_target = create_render_target_func(std::move(color_image));
686 frames.emplace_back(std::make_unique<vkb::rendering::RenderFrameCpp>(device, std::move(render_target), thread_count));
687 }
688
689 this->thread_count = thread_count;
690 this->prepared = true;
691}
692
693template <vkb::BindingType bindingType>
694inline void RenderContext<bindingType>::recreate()

Callers 1

drawMethod · 0.45

Calls 3

get_handleMethod · 0.45
get_formatMethod · 0.45
get_usageMethod · 0.45

Tested by

no test coverage detected