#pragma once #include "imgui.h" #include #include "buffer_vk.h" #include "render_resource.h" class texture : public render_resource { public: texture(); ~texture() override; [[nodiscard]] int get_width() const override { return width_; } [[nodiscard]] int get_height() const override { return height_; } [[nodiscard]] ImTextureID get_texture_id() override { return descriptor_set; } bool init_data(const uint8_t* data, int width, int height, vk::Format in_format); bool is_valid() const { return image_view; } operator vk::DescriptorImageInfo() const { vk::DescriptorImageInfo info; info.setImageLayout(vk::ImageLayout::eShaderReadOnlyOptimal); info.setImageView(image_view); info.setSampler(sampler); return info; } void upload(const void* data, size_t size); vk::Image image; vk::ImageView image_view; vk::Sampler sampler; vk::DeviceMemory memory; vk::DescriptorSet descriptor_set; vk::Format format; protected: int width_; int height_; };