le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
draw_primitive.hpp
Go to the documentation of this file.
1#pragma once
3#include <vector>
4
5namespace le {
7class IDrawPrimitive : public IDrawable {
8 public:
9 [[nodiscard]] virtual auto get_instances() const -> std::span<RenderInstance const> = 0;
10 [[nodiscard]] virtual auto to_primitive() const -> Primitive = 0;
11
12 void draw(IRenderer& renderer) const final { renderer.draw(to_primitive(), get_instances()); }
13};
14
16template <std::derived_from<IDrawPrimitive> Type>
17class SingleDrawPrimitive : public Type, public RenderInstance {
18 public:
19 using Type::Type;
20
21 [[nodiscard]] auto get_instances() const -> std::span<RenderInstance const> final { return {static_cast<RenderInstance const*>(this), 1}; }
22};
23
25template <std::derived_from<IDrawPrimitive> Type>
26class InstancedDrawPrimitive : public Type {
27 public:
28 using Type::Type;
29
30 [[nodiscard]] auto get_instances() const -> std::span<RenderInstance const> final { return instances; }
31
32 std::vector<RenderInstance> instances{};
33};
34} // namespace le
Interface for drawable primitives.
Definition draw_primitive.hpp:7
void draw(IRenderer &renderer) const final
Definition draw_primitive.hpp:12
virtual auto to_primitive() const -> Primitive=0
virtual auto get_instances() const -> std::span< RenderInstance const >=0
Interface for drawable types.
Definition drawable.hpp:6
Definition renderer.hpp:15
Base class for Draw Primitives using a vector of Render Instances.
Definition draw_primitive.hpp:26
std::vector< RenderInstance > instances
Definition draw_primitive.hpp:32
auto get_instances() const -> std::span< RenderInstance const > final
Definition draw_primitive.hpp:30
Base class for Draw Primitives using a single Render Instance.
Definition draw_primitive.hpp:17
auto get_instances() const -> std::span< RenderInstance const > final
Definition draw_primitive.hpp:21
Definition animation.hpp:8
Draw primitive.
Definition primitive.hpp:10
Instance data for instanced rendering.
Definition render_instance.hpp:7