BARE2D
BasicRenderer.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  * @class BasicRenderer
13  * @author Davis-Dev
14  * @date 10/08/23
15  * @file BasicRenderer.hpp
16  * @brief A simple renderer. Has the GLSL VAOs vertexPosition (vec3), vertexColour (vec4), and vertexUV (vec2). Uniforms textureSampler (sampler2D), projectionMatrix (mat4)
17  */
18  class BasicRenderer : public Renderer {
19  public:
20  BasicRenderer(std::string& fragShader, std::string& vertShader, unsigned int perspectiveWidth = 2, unsigned int perspectiveHeight = 2);
21  virtual ~BasicRenderer();
22 
23  virtual void init() override;
24  virtual void preRender() override;
25 
26  /**
27  * @brief Sets the camera to a given pointer. This means that the renderer takes ownership
28  * @param camera The pointer to the camera.
29  */
30  virtual void setCamera(std::shared_ptr<Camera2D> camera);
31 
32  /**
33  * @return Returns the Camera pointer. To be used only to link multiple renderers' cameras.
34  */
35  std::shared_ptr<Camera2D> getCamera();
36 
37  virtual void draw(glm::vec4 destRect, glm::vec4 uvRect, GLuint texture, float depth, Colour colour = Colour(255, 255, 255, 255), float angle = 0.0f, glm::vec2 COR = glm::vec2(0.5f));
38 
39  protected:
40  virtual void createRenderBatches() override;
41 
42  std::string m_fragShader, m_vertShader;
43 
44  std::vector<Glyph*> m_glyphs;
45 
46  std::shared_ptr<Camera2D> m_camera;
47  };
48 
49 }
BARE2D::Renderer
The renderer class holds some shader program, manages some VBO, some render batch(es),...
Definition: Renderer.hpp:15
BARE2D::BasicRenderer::m_fragShader
std::string m_fragShader
Definition: BasicRenderer.hpp:42
BARE2D
Definition: App.cpp:13
BARE2D::BasicRenderer::m_vertShader
std::string m_vertShader
Definition: BasicRenderer.hpp:42
BARE2D::BasicRenderer::~BasicRenderer
virtual ~BasicRenderer()
Definition: BasicRenderer.cpp:17
Camera2D.hpp
BARE2D::BasicRenderer::m_glyphs
std::vector< Glyph * > m_glyphs
Definition: BasicRenderer.hpp:44
Renderer.hpp
Vertex.hpp
BARE2D::BasicRenderer::m_camera
std::shared_ptr< Camera2D > m_camera
Definition: BasicRenderer.hpp:46
BARE2D::BasicRenderer::setCamera
virtual void setCamera(std::shared_ptr< Camera2D > camera)
Sets the camera to a given pointer. This means that the renderer takes ownership.
Definition: BasicRenderer.cpp:34
BARE2D::BasicRenderer::BasicRenderer
BasicRenderer(std::string &fragShader, std::string &vertShader, unsigned int perspectiveWidth=2, unsigned int perspectiveHeight=2)
Definition: BasicRenderer.cpp:5
BARE2D::BasicRenderer::createRenderBatches
virtual void createRenderBatches() override
Constructs all of the render batches from data given by, say, draw() calls.
Definition: BasicRenderer.cpp:74
BARE2D::BasicRenderer
Definition: BasicRenderer.hpp:18
BARE2D::BasicRenderer::preRender
virtual void preRender() override
Does stuff inside of the render function, within the shader's use.
Definition: BasicRenderer.cpp:44
BARE2D::BasicRenderer::getCamera
std::shared_ptr< Camera2D > getCamera()
Definition: BasicRenderer.cpp:39
BARE2D::Colour
An RGBA 8-bit colour value.
Definition: Vertex.hpp:20
BARE2D::BasicRenderer::init
virtual void init() override
Initializes all necessary bits of the renderer.
Definition: BasicRenderer.cpp:20
BARE2D::BasicRenderer::draw
virtual void draw(glm::vec4 destRect, glm::vec4 uvRect, GLuint texture, float depth, Colour colour=Colour(255, 255, 255, 255), float angle=0.0f, glm::vec2 COR=glm::vec2(0.5f))
Definition: BasicRenderer.cpp:56