PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
render_target_internal.h
1#pragma once
2
3#include "pixelbullet/graphics/descriptors/descriptor.h"
4#include "pixelbullet/graphics/render_target.h"
5
6#include <memory>
7#include <vector>
8
9namespace pixelbullet
10{
11class Image2D;
12class RenderDevice;
13
14class RenderTarget2D final : public Descriptor
15{
16public:
17 explicit RenderTarget2D(RenderTargetSpecification specification);
19
20 void Rebuild(const RenderDevice& render_device, uint32_t image_count, const VkExtent2D& swapchain_extent);
21 void SetActiveImageIndex(uint32_t active_image_index);
22 RenderTargetView CreateView() const;
23
24 WriteDescriptorSet GetWriteDescriptor(uint32_t binding, VkDescriptorType descriptor_type,
25 const std::optional<OffsetSize>& offset_size) const override;
26 uint64_t GetRevision() const override
27 {
28 return revision_;
29 }
30
31 const RenderTargetSpecification& GetSpecification() const
32 {
33 return specification_;
34 }
35 const std::string& GetName() const
36 {
37 return specification_.name;
38 }
39 const glm::uvec2& GetExtent() const
40 {
41 return extent_;
42 }
43 uint32_t GetImageCount() const
44 {
45 return static_cast<uint32_t>(images_.size());
46 }
47 const Image2D* GetActiveImage() const;
48 const Image2D* GetImage(uint32_t image_index) const;
49 const VkImageView& GetImageView(uint32_t image_index) const;
50
51private:
52 RenderTargetSpecification specification_;
53 glm::uvec2 extent_{ 0, 0 };
54 uint32_t active_image_index_ = 0;
55 uint64_t revision_ = 1;
56 std::vector<std::unique_ptr<Image2D>> images_;
57};
58} // namespace pixelbullet
Definition descriptor.h:75
Definition render_device.h:16
Definition render_target_internal.h:15
Definition render_target.h:32
Definition descriptor.h:45
Definition render_target.h:19