le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
renderer.hpp
Go to the documentation of this file.
1#pragma once
2#include "le2d/primitive.hpp"
8#include "le2d/viewport.hpp"
9#include <klib/base_types.hpp>
10#include <kvf/rect.hpp>
11#include <kvf/render_pass_fwd.hpp>
12#include <kvf/render_target.hpp>
13
14namespace le {
15class IRenderer : public klib::Polymorphic {
16 public:
17 static constexpr auto min_size_v{32};
18 static constexpr auto max_size_v{4 * 4096};
19
21
22 [[nodiscard]] virtual auto command_buffer() const -> vk::CommandBuffer = 0;
23 [[nodiscard]] virtual auto get_stats() const -> RenderStats const& = 0;
24
26 [[nodiscard]] auto is_rendering() const -> bool { return command_buffer() != vk::CommandBuffer{}; }
27
33 virtual auto begin_render(vk::CommandBuffer command_buffer, glm::ivec2 size, kvf::Color clear = kvf::black_v) -> bool = 0;
35 virtual auto end_render() -> kvf::RenderTarget const& = 0;
36
37 [[nodiscard]] virtual auto framebuffer_size() const -> glm::ivec2 = 0;
38
39 virtual void set_line_width(float width) = 0;
40 virtual void set_shader(IShader const& shader) = 0;
41 virtual void set_user_data(UserDrawData const& user_data) = 0;
42
46 virtual void draw(Primitive const& primitive, std::span<RenderInstance const> instances) = 0;
47
49 [[nodiscard]] virtual auto unprojector() const -> Unprojector = 0;
50
54 vk::PolygonMode polygon_mode{vk::PolygonMode::eFill};
58 kvf::UvRect scissor_rect{kvf::uv_rect_v};
59};
60} // namespace le
Definition renderer.hpp:15
static constexpr auto min_size_v
Definition renderer.hpp:17
static constexpr auto max_size_v
Definition renderer.hpp:18
virtual auto get_stats() const -> RenderStats const &=0
virtual void set_shader(IShader const &shader)=0
virtual void set_line_width(float width)=0
kvf::UvRect scissor_rect
Scissor rect.
Definition renderer.hpp:58
Viewport viewport
Viewport type.
Definition renderer.hpp:56
auto is_rendering() const -> bool
Definition renderer.hpp:26
virtual void draw(Primitive const &primitive, std::span< RenderInstance const > instances)=0
Draw given instances of a Primitive.
virtual auto framebuffer_size() const -> glm::ivec2=0
Transform view
Render view (generates view matrix).
Definition renderer.hpp:52
virtual auto begin_render(vk::CommandBuffer command_buffer, glm::ivec2 size, kvf::Color clear=kvf::black_v) -> bool=0
Begin rendering.
virtual auto end_render() -> kvf::RenderTarget const &=0
End rendering.
virtual auto command_buffer() const -> vk::CommandBuffer=0
vk::PolygonMode polygon_mode
Fill mode.
Definition renderer.hpp:54
virtual void set_user_data(UserDrawData const &user_data)=0
virtual auto unprojector() const -> Unprojector=0
Opaque interface for a Shader program.
Definition shader.hpp:7
Definition unprojector.hpp:7
Definition animation.hpp:8
std::variant< viewport::Dynamic, viewport::Letterbox > Viewport
Definition viewport.hpp:19
Draw primitive.
Definition primitive.hpp:10
Instance data for instanced rendering.
Definition render_instance.hpp:7
Definition render_stats.hpp:5
2D transformation.
Definition transform.hpp:8
Definition user_draw_data.hpp:7
Definition viewport.hpp:7