#pragma once #include #include #include #include #include namespace lt::renderer::vk { class Instance; class Surface: public ISurface { public: Surface(IInstance *instance, const ecs::Entity &surface_entity); ~Surface() override; 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 -> math::uvec2 override; private: class Instance *m_instance {}; VkSurfaceKHR m_surface = VK_NULL_HANDLE; ecs::Entity m_surface_entity; }; } // namespace lt::renderer::vk