1
0
Fork 0
Univerxel/src/client/render/vk/api/Images.hpp

47 lines
1.1 KiB
C++

#pragma once
#include "../../api/Images.hpp"
#include "Memory.hpp"
namespace render::vk {
class Image: public render::Image {
public:
virtual ~Image();
const VkImageView &getView() const { return view; }
static void MakeDefault();
struct info {
VkImage ref = nullptr;
VkImageView view = nullptr;
VkDeviceSize offset = 0;
};
static std::unique_ptr<Image> Create(const requirement &);
protected:
Image(VkImage ref, VkImageView view, memory::ptr mem):
ref(ref), view(view), memory(std::move(mem)) { }
VkImage ref;
VkImageView view;
memory::ptr memory;
};
class Texture: public render::Texture, Image {
public:
~Texture();
const VkDescriptorImageInfo &getDescriptor() const { return descriptor; }
static std::unique_ptr<Texture> LoadFromFile(const std::string&, const sampling&);
protected:
Texture(VkSampler sampler, VkImageView view, VkImageLayout layout, VkImage ref, memory::ptr memory):
vk::Image(ref, view, std::move(memory)), sampler(sampler), descriptor({sampler, view, layout}) { }
VkSampler sampler;
const VkDescriptorImageInfo descriptor;
};
}