SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
VulkanDescriptorSet.h
1#pragma once
2
3#include "spark/render/DescriptorSet.h"
4#include "spark/render/Resource.h"
5#include "spark/render/vk/Export.h"
6#include "spark/render/vk/Helpers.h"
7#include "spark/render/vk/VulkanBuffer.h"
8#include "spark/render/vk/VulkanImage.h"
9#include "spark/render/vk/VulkanSampler.h"
10
11SPARK_FWD_DECLARE_VK_HANDLE(VkDescriptorSet)
12
13namespace spark::render::vk
14{
15 class VulkanDescriptorSetLayout;
16 class IVulkanBuffer;
17 class IVulkanImage;
18 class IVulkanSampler;
19
23 class SPARK_RENDER_VK_EXPORT VulkanDescriptorSet final : public DescriptorSet<IVulkanBuffer, IVulkanImage, IVulkanSampler>, public Resource<VkDescriptorSet>
24 {
25 public:
33 explicit VulkanDescriptorSet(const VulkanDescriptorSetLayout& layout, VkDescriptorSet descriptor_set);
34 ~VulkanDescriptorSet() override;
35
36 VulkanDescriptorSet(const VulkanDescriptorSet& other) = delete;
37 VulkanDescriptorSet(VulkanDescriptorSet&& other) noexcept = delete;
38 VulkanDescriptorSet& operator=(const VulkanDescriptorSet& other) = delete;
39 VulkanDescriptorSet& operator=(VulkanDescriptorSet&& other) noexcept = delete;
40
45 [[nodiscard]] const VulkanDescriptorSetLayout& layout() const noexcept;
46
48 void update(unsigned binding, const IVulkanBuffer& buffer, unsigned buffer_element, unsigned elements, unsigned first_descriptor) const override;
49
51 void update(unsigned binding,
52 const IVulkanImage& texture,
53 unsigned descriptor,
54 unsigned first_level,
55 unsigned levels,
56 unsigned first_layer,
57 unsigned layers) const override;
58
60 void update(unsigned binding, const IVulkanSampler& sampler, unsigned descriptor) const override;
61
63 void attach(unsigned binding, const IVulkanImage& image) const override;
64
65 private:
66 struct Impl;
67 std::unique_ptr<Impl> m_impl;
68 };
69}
Defines a set of descriptors.
Definition DescriptorSet.h:211
Definition Resource.h:34
Vulkan interface for a IBuffer.
Definition VulkanBuffer.h:22
Represents a Vulkan image.
Definition VulkanImage.h:33
Interface for Vulkan sampler.
Definition VulkanSampler.h:22
Vulkan implementation of IDescriptorSetLayout.
Definition VulkanDescriptorSetLayout.h:25
Vulkan implementation of IDescriptorSet.
Definition VulkanDescriptorSet.h:24
Definition VulkanDescriptorSet.cpp:17