#pragma once #include #include #include namespace lt::renderer::vk { class Surface { public: Surface(const ecs::Entity &surface_entity); ~Surface(); Surface(Surface &&) = default; Surface(const Surface &) = delete; auto operator=(Surface &&) -> Surface & = default; auto operator=(const Surface &) const -> Surface & = delete; [[nodiscard]] auto vk() const -> VkSurfaceKHR { return m_surface; } [[nodiscard]] auto get_framebuffer_size() const -> VkExtent2D { return m_framebuffer_size; } private: memory::NullOnMove m_surface = VK_NULL_HANDLE; VkExtent2D m_framebuffer_size {}; }; } // namespace lt::renderer::vk