BARE2D
TexturelessRenderer.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <glm/glm.hpp>
4 #include <memory>
5 
6 #include "Renderer.hpp"
7 #include "Vertex.hpp"
8 #include "Camera2D.hpp"
9 
10 namespace BARE2D {
11 
12  /**
13  * @class TexturelessRenderer
14  * @author Davis-Dev
15  * @date 10/08/23
16  * @file TexturelessRenderer.hpp
17  * @brief A renderer made to simply run a shader with some passed glyphs. VAOs vertexPosition (vec3), vertexColour (vec4), and vertexUV (vec4). Only uniform is projectionMatrix (mat4)
18  */
19  class TexturelessRenderer : public Renderer {
20  public:
21  TexturelessRenderer(std::string& fragShader,
22  std::string& vertShader,
23  unsigned int perspectiveWidth = 2,
24  unsigned int perspectiveHeight = 2);
25  virtual ~TexturelessRenderer();
26 
27  virtual void init() override;
28  virtual void preRender() override;
29 
30  /**
31  * @brief Sets the camera to a given pointer. This means that the renderer takes ownership
32  * @param camera The pointer to the camera.
33  */
34  virtual void setCamera(std::shared_ptr<Camera2D> camera);
35 
36  /**
37  * @return Returns the Camera pointer. To be used only to link multiple renderers' cameras.
38  */
39  std::shared_ptr<Camera2D> getCamera();
40 
41  virtual void draw(glm::vec4 destRect,
42  float depth,
43  Colour colour = Colour(255, 255, 255, 255),
44  float angle = 0.0f,
45  glm::vec2 COR = glm::vec2(0.5f));
46 
47  protected:
48  virtual void createRenderBatches() override;
49 
50  std::string m_fragShader, m_vertShader;
51 
52  std::vector<Glyph*> m_glyphs;
53 
54  GLuint m_texture = 0;
55 
56  std::shared_ptr<Camera2D> m_camera;
57  };
58 
59 } // namespace BARE2D
BARE2D::Renderer
The renderer class holds some shader program, manages some VBO, some render batch(es),...
Definition: Renderer.hpp:15
BARE2D::TexturelessRenderer::m_texture
GLuint m_texture
Definition: TexturelessRenderer.hpp:54
BARE2D
Definition: App.cpp:13
BARE2D::TexturelessRenderer::init
virtual void init() override
Initializes all necessary bits of the renderer.
Definition: TexturelessRenderer.cpp:20
BARE2D::TexturelessRenderer::m_fragShader
std::string m_fragShader
Definition: TexturelessRenderer.hpp:50
BARE2D::TexturelessRenderer::m_glyphs
std::vector< Glyph * > m_glyphs
Definition: TexturelessRenderer.hpp:52
Camera2D.hpp
BARE2D::TexturelessRenderer::~TexturelessRenderer
virtual ~TexturelessRenderer()
Definition: TexturelessRenderer.cpp:17
BARE2D::TexturelessRenderer::getCamera
std::shared_ptr< Camera2D > getCamera()
Definition: TexturelessRenderer.cpp:77
BARE2D::TexturelessRenderer::createRenderBatches
virtual void createRenderBatches() override
Constructs all of the render batches from data given by, say, draw() calls.
Definition: TexturelessRenderer.cpp:105
BARE2D::TexturelessRenderer::setCamera
virtual void setCamera(std::shared_ptr< Camera2D > camera)
Sets the camera to a given pointer. This means that the renderer takes ownership.
Definition: TexturelessRenderer.cpp:73
Renderer.hpp
Vertex.hpp
BARE2D::TexturelessRenderer::draw
virtual void draw(glm::vec4 destRect, float depth, Colour colour=Colour(255, 255, 255, 255), float angle=0.0f, glm::vec2 COR=glm::vec2(0.5f))
Definition: TexturelessRenderer.cpp:88
BARE2D::TexturelessRenderer::m_vertShader
std::string m_vertShader
Definition: TexturelessRenderer.hpp:50
BARE2D::TexturelessRenderer::m_camera
std::shared_ptr< Camera2D > m_camera
Definition: TexturelessRenderer.hpp:56
BARE2D::TexturelessRenderer::preRender
virtual void preRender() override
Does stuff inside of the render function, within the shader's use.
Definition: TexturelessRenderer.cpp:81
BARE2D::TexturelessRenderer::TexturelessRenderer
TexturelessRenderer(std::string &fragShader, std::string &vertShader, unsigned int perspectiveWidth=2, unsigned int perspectiveHeight=2)
Definition: TexturelessRenderer.cpp:7
BARE2D::Colour
An RGBA 8-bit colour value.
Definition: Vertex.hpp:20
BARE2D::TexturelessRenderer
Definition: TexturelessRenderer.hpp:19