27 RenderTargetExtentMode extent_mode = RenderTargetExtentMode::SwapchainScaled;
28 glm::vec2 scale{ 1.0f, 1.0f };
29 glm::uvec2 FixedExtent{ 0, 0 };
30 VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
31 VkFilter filter = VK_FILTER_LINEAR;
32 VkSamplerAddressMode address_mode = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
34 [[nodiscard]] glm::uvec2 ResolveExtent(
const glm::uvec2& baseExtent)
const;
42 void Rebuild(
const Graphics& graphics, uint32_t imageCount,
const VkExtent2D& swapchainExtent);
43 void SetActiveImageIndex(uint32_t activeImageIndex);
45 WriteDescriptorSet GetWriteDescriptor(uint32_t binding, VkDescriptorType descriptorType,
46 const std::optional<OffsetSize>& offsetSize)
const override;
47 uint64_t GetRevision()
const override
54 return specification_;
56 const std::string& GetName()
const
58 return specification_.name;
60 const glm::uvec2& GetExtent()
const
64 uint32_t GetImageCount()
const
66 return static_cast<uint32_t
>(images_.size());
68 const Image2D* GetActiveImage()
const;
69 const Image2D* GetImage(uint32_t imageIndex)
const;
70 const VkImageView& GetImageView(uint32_t imageIndex)
const;
74 glm::uvec2 extent_{ 0, 0 };
75 uint32_t active_image_index_ = 0;
76 uint64_t revision_ = 1;
77 std::vector<std::unique_ptr<Image2D>> images_;