14 VulkanTexture(VkDevice device, VkPhysicalDevice physicalDevice,
15 VkCommandPool commandPool, VkQueue graphicsQueue);
24 void Bind(uint32_t slot = 0)
const override;
25 void Unbind()
const override;
36 uint32_t
GetWidth()
const override {
return m_width; }
37 uint32_t
GetHeight()
const override {
return m_height; }
41 uint64_t GetImGuiTextureID()
const override;
47 void SetDescriptorSets(std::vector<VkDescriptorSet> sets) { m_descriptorSets = std::move(sets); }
54 void UpdateDescriptorSets();
57 uint32_t FindMemoryType(uint32_t typeFilter,
58 VkMemoryPropertyFlags properties);
60 bool CreateImage(uint32_t
width, uint32_t
height, VkFormat format,
61 VkImageUsageFlags usage, uint32_t mipLevels);
62 bool CreateImageView(VkFormat format);
65 void TransitionImageLayout(VkImage image, VkImageLayout oldLayout,
66 VkImageLayout newLayout);
68 void GenerateMipmaps(VkCommandBuffer cmd, int32_t
width, int32_t
height);
70 VkDevice m_device = VK_NULL_HANDLE;
71 VkPhysicalDevice m_physicalDevice = VK_NULL_HANDLE;
72 VkCommandPool m_commandPool = VK_NULL_HANDLE;
73 VkQueue m_graphicsQueue = VK_NULL_HANDLE;
75 VkImage m_image = VK_NULL_HANDLE;
76 VkDeviceMemory m_imageMemory = VK_NULL_HANDLE;
77 VkImageView m_imageView = VK_NULL_HANDLE;
78 VkSampler m_sampler = VK_NULL_HANDLE;
80 std::vector<VkDescriptorSet> m_descriptorSets;
81 mutable VkDescriptorSet m_imguiDescriptorSet = VK_NULL_HANDLE;
84 uint32_t m_height = 0;
88 float m_lodBias = 0.0f;
89 uint32_t m_mipLevels = 1;
90 uint32_t m_maxMipLevels = 0;
void SetDescriptorSets(std::vector< VkDescriptorSet > sets)
const std::vector< VkDescriptorSet > & GetDescriptorSets() const
void Bind(uint32_t slot=0) const override
TextureType GetType() const override
VulkanTexture(VkDevice device, VkPhysicalDevice physicalDevice, VkCommandPool commandPool, VkQueue graphicsQueue)
void Unbind() const override
uint32_t GetWidth() const override
TextureFormat GetFormat() const override
void SetWrapMode(TextureWrapMode wrapMode) override
bool HasDescriptorSets() const
void SetLodBias(float bias) override
uint32_t GetHeight() const override
void SetFilter(TextureFilter filter) override
float GetLodBias() const override
bool LoadFromFile(const std::string &filePath) override
Decodes an image file and uploads it as a new Vulkan image.
bool LoadFromMemory(const void *data, uint32_t width, uint32_t height, TextureFormat format) override
Uploads raw pixel data through a staging buffer and generates mips.
VkSampler GetSampler() const
VkImageView GetImageView() const
void SetMaxMipLevels(uint32_t levels)