TazGraph Project v0.1.0
Loading...
Searching...
No Matches
Renderer.h
1#pragma once
2
3#include "../../pch.h"
4
5#include "../Vertex.h"
6#include "../GLSLProgram.h"
7
8// init --_
9// `-->begin()
10// |
11// | --> draw()
12// | --> draw()
13// |
14// |--> end()
15// `--> renderBatch()
16
17namespace Taz
18{
19 struct RenderBatch {
20 enum class RendererType {
21 Line,
22 PlaneColor,
23 PlaneModel,
24 Light
25 };
26
27 RendererType renderer_type = RendererType::Line;
28
29 enum class MeshType {
30 Line,
31 Triangle,
32 Quad,
33 Box,
34 Sphere
35 };
36 MeshType mesh_type = MeshType::Quad;
37
38 std::string shaderName;
39 std::string batchName;
40
41 size_t count = 0;
42 size_t index = 0;
43
44 // Additional shader uniforms
45 glm::mat4 rotationMatrix = glm::mat4(1.0f);
46 glm::vec2 viewportSize = glm::vec2(0.0f);
47 };
48
49
50
51 class Renderer {
52 public:
53 Renderer();
54 ~Renderer();
55
56 virtual void init();
57
58 virtual void begin();
59
60 virtual void endBatch(const Taz::RenderBatch& batch) = 0;
61
62 GLuint _vboInstances;
63
64 size_t currentBatchIndex = 0;
65 };
66
67}
Definition Renderer.h:51
Definition Renderer.h:19