BARE2D
DebugRenderer.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Renderer.hpp"
4 
5 #include <glm/glm.hpp>
6 #include <vector>
7 
8 #include "Vertex.hpp"
9 
10 namespace BARE2D {
11 
12  struct Line {
13  void construct(glm::vec2 p0, glm::vec2 p1, float& thick, Colour& col);
14 
15  glm::vec2 point0;
16  glm::vec2 point1;
17  float thickness;
19  };
20 
21  struct Circle {
22  void construct(glm::vec2& p0, float& lineThick, float& radius, Colour& fillCol);
23 
24  glm::vec2 origin;
25  std::vector<Line> lines;
26  };
27 
28  struct Rectangle {
29  void construct(glm::vec4& posSize, float& lineThick, Colour& fillCol);
30 
31  glm::vec4 destRect;
32  Line lines[2];
33  };
34 
35  /**
36  * @class DebugRenderer
37  * @author Davis-Dev
38  * @date 10/08/23
39  * @file DebugRenderer.hpp
40  * @brief A renderer specifically made for debugging purposes. Contains its own shaders.
41  */
42  class DebugRenderer : public Renderer {
43  public:
44  DebugRenderer();
45  virtual ~DebugRenderer();
46 
47  /**
48  * @brief Initializes with very rudimentary shaders (hardcoded), adds vertex attributes
49  */
50  virtual void init() override;
51 
52  virtual void begin() override;
53 
54  virtual void render() override;
55 
56  /**
57  * @brief Draws a line
58  * @param point0 The origin
59  * @param point1 Where the line goes to
60  * @param thickness The thickness of the line
61  * @param colour The colour of the line
62  */
63  virtual void drawLine(glm::vec2 point0, glm::vec2 point1, float thickness, Colour colour);
64 
65  /**
66  * @brief Draws a circle
67  * @param centre The centre point of the circle
68  * @param lineThickness The thickness of the lines creating the circle
69  * @param radius The radius of the circle
70  * @param lineColour The colour of the lines
71  * @param fillColour The fill of the circle
72  */
73  virtual void drawCircle(glm::vec2 centre, float lineThickness, float radius, Colour fillColour = Colour(255, 255, 255, 255));
74 
75  /**
76  * @brief Draws a rectangle
77  * @param destRect The destination rectangle of the rectangle (position, then size)
78  * @param lineColour The colour of the lines that make up the rectangle
79  * @param fillColour The colour of the fill.
80  */
81  virtual void drawRectangle(glm::vec4 destRect, float lineThickness, Colour fillColour = Colour(255, 255, 255, 255));
82 
83  protected:
84  virtual void createRenderBatches() override;
85 
86  std::vector<Line> m_lines;
87  std::vector<Circle> m_circles;
88  std::vector<Rectangle> m_rectangles;
89 
90  };
91 
92 }
BARE2D::DebugRenderer::drawRectangle
virtual void drawRectangle(glm::vec4 destRect, float lineThickness, Colour fillColour=Colour(255, 255, 255, 255))
Draws a rectangle.
Definition: DebugRenderer.cpp:108
BARE2D::Renderer
The renderer class holds some shader program, manages some VBO, some render batch(es),...
Definition: Renderer.hpp:15
BARE2D
Definition: App.cpp:13
BARE2D::Circle::origin
glm::vec2 origin
Definition: DebugRenderer.hpp:24
BARE2D::Rectangle::destRect
glm::vec4 destRect
Definition: DebugRenderer.hpp:31
BARE2D::Rectangle::construct
void construct(glm::vec4 &posSize, float &lineThick, Colour &fillCol)
Definition: DebugRenderer.cpp:59
BARE2D::DebugRenderer::~DebugRenderer
virtual ~DebugRenderer()
Definition: DebugRenderer.cpp:71
BARE2D::Line::point1
glm::vec2 point1
Definition: DebugRenderer.hpp:16
BARE2D::Line::point0
glm::vec2 point0
Definition: DebugRenderer.hpp:15
Renderer.hpp
BARE2D::DebugRenderer::m_lines
std::vector< Line > m_lines
Definition: DebugRenderer.hpp:86
Vertex.hpp
BARE2D::Rectangle
Definition: DebugRenderer.hpp:28
BARE2D::Rectangle::lines
Line lines[2]
Definition: DebugRenderer.hpp:32
BARE2D::Circle::construct
void construct(glm::vec2 &p0, float &lineThick, float &radius, Colour &fillCol)
Definition: DebugRenderer.cpp:37
BARE2D::DebugRenderer
Definition: DebugRenderer.hpp:42
BARE2D::DebugRenderer::drawCircle
virtual void drawCircle(glm::vec2 centre, float lineThickness, float radius, Colour fillColour=Colour(255, 255, 255, 255))
Draws a circle.
Definition: DebugRenderer.cpp:103
BARE2D::DebugRenderer::drawLine
virtual void drawLine(glm::vec2 point0, glm::vec2 point1, float thickness, Colour colour)
Draws a line.
Definition: DebugRenderer.cpp:98
BARE2D::DebugRenderer::init
virtual void init() override
Initializes with very rudimentary shaders (hardcoded), adds vertex attributes.
Definition: DebugRenderer.cpp:74
BARE2D::DebugRenderer::DebugRenderer
DebugRenderer()
Definition: DebugRenderer.cpp:68
BARE2D::Line::thickness
float thickness
Definition: DebugRenderer.hpp:17
BARE2D::Line::colour
Colour colour
Definition: DebugRenderer.hpp:18
BARE2D::DebugRenderer::render
virtual void render() override
Actually renders the contents to the screen!
Definition: DebugRenderer.cpp:196
BARE2D::DebugRenderer::m_rectangles
std::vector< Rectangle > m_rectangles
Definition: DebugRenderer.hpp:88
BARE2D::Circle
Definition: DebugRenderer.hpp:21
BARE2D::DebugRenderer::begin
virtual void begin() override
Clears the necessary vectors, etc. to prepare for draw() calls, etc.
Definition: DebugRenderer.cpp:90
BARE2D::Colour
An RGBA 8-bit colour value.
Definition: Vertex.hpp:20
BARE2D::DebugRenderer::createRenderBatches
virtual void createRenderBatches() override
Constructs all of the render batches from data given by, say, draw() calls.
Definition: DebugRenderer.cpp:113
BARE2D::Line::construct
void construct(glm::vec2 p0, glm::vec2 p1, float &thick, Colour &col)
Definition: DebugRenderer.cpp:30
BARE2D::Circle::lines
std::vector< Line > lines
Definition: DebugRenderer.hpp:25
BARE2D::Line
Definition: DebugRenderer.hpp:12
BARE2D::DebugRenderer::m_circles
std::vector< Circle > m_circles
Definition: DebugRenderer.hpp:87