#pragma once #include #define VULKAN_HPP_NO_STRUCT_CONSTRUCTORS #include #include #include #include struct Window; /* Contains all of the Vulkan objects involved in rendering the scene */ struct Renderer { Renderer(Window& win); ~Renderer(); void draw(); void present(); Window& win; vk::Instance instance; vk::Device dev; vk::Fence render_fence; vk::Semaphore image_wait_semaphore, render_wait_semaphore; vk::SurfaceKHR surface; std::unique_ptr swapchain; int queue_family; vk::Queue queue; std::unique_ptr command_buffer; std::unique_ptr render_pass; uint32_t current_image_idx; vk::Image depth_image; vk::ImageView depth_image_view; vk::DeviceMemory depth_alloc; };