#pragma once #include #include #include "resources/render_target.hpp" #include "vulkan/device.hpp" namespace sophia { class RenderTargetPool { public: RenderTargetPool(Device& device, vk::Format format); RenderTargetPool(const RenderTargetPool&) = delete; RenderTargetPool& operator=(const RenderTargetPool&) = delete; RenderTargetHandle create(u32 width, u32 height); RenderTarget& get(RenderTargetHandle handle) { return pool.get(handle); } const RenderTarget& get(RenderTargetHandle handle) const { return pool.get(handle); } void release(RenderTargetHandle handle); bool isAlive(RenderTargetHandle handle) const { return pool.isAlive(handle); } vk::Format getFormat() const { return format; } vk::Format getDepthFormat() const { return depthFormat; } void applyPendingResizes(); private: Device& device; vk::Format format; vk::Format depthFormat; Pool pool{"RenderTarget"}; }; } // namespace sophia