PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
render_target.h
1#pragma once
2
3#include "pixelbullet/graphics/render_texture.h"
4
5#include <glm/glm.hpp>
6
7#include <cstdint>
8#include <string>
9#include <utility>
10
11namespace pixelbullet
12{
13enum class RenderTargetExtentMode
14{
15 SwapchainScaled,
16 Fixed
17};
18
20{
21 std::string name;
22 RenderTargetExtentMode extent_mode = RenderTargetExtentMode::SwapchainScaled;
23 glm::vec2 scale{ 1.0f, 1.0f };
24 glm::uvec2 FixedExtent{ 0, 0 };
25 RenderTextureFormat format = RenderTextureFormat::Rgba8Unorm;
26 RenderTextureFilter filter = RenderTextureFilter::Linear;
27 RenderTextureAddressMode address_mode = RenderTextureAddressMode::ClampToEdge;
28
29 [[nodiscard]] glm::uvec2 ResolveExtent(const glm::uvec2& baseExtent) const;
30};
31
32class RenderTargetView
33{
34public:
35 RenderTargetView() = default;
36 RenderTargetView(std::string name, glm::uvec2 extent, uint32_t image_count) noexcept
37 : name_(std::move(name))
38 , extent_(extent)
39 , image_count_(image_count)
40 {
41 }
42
43 const std::string& GetName() const
44 {
45 return name_;
46 }
47 const glm::uvec2& GetExtent() const
48 {
49 return extent_;
50 }
51 uint32_t GetImageCount() const
52 {
53 return image_count_;
54 }
55
56private:
57 std::string name_;
58 glm::uvec2 extent_{ 0, 0 };
59 uint32_t image_count_ = 0;
60};
61} // namespace pixelbullet
Definition render_target.h:20