CheeseEngine
A 2D Game Engine
Loading...
Searching...
No Matches
renderQueue.hpp
Go to the documentation of this file.
1#pragma once
2
3#define GLM_FORCE_RADIANS
4
5#include <algorithm>
6#include <array>
7#include <cstdlib>
8#include <glm/glm.hpp>
9#include <mutex>
10#include <queue>
11#include <variant>
12#include <vector>
13
15
17 uint32_t arrayId;
18 uint32_t layerId;
19};
20
23
24 struct AddRect {
25 glm::vec2 position;
26 float width;
27 float height;
28 glm::vec3 color;
30 };
31
32 struct AddTri {
33 std::array<glm::vec2, 3> positions;
34 glm::vec3 color;
35 uint32_t index;
36 };
37
38 struct Remove {
39 uint32_t index;
40 };
41
42 struct Transform {
43 uint32_t index;
44 glm::mat4 model;
45 };
46
47 struct Camera {
48 glm::vec2 position;
49 float zoom;
50 };
51
52 struct SetTexture {
53 uint32_t index;
55 std::vector<glm::vec2> texCoords;
56 };
57
58 using Data = std::variant<AddRect, AddTri, Remove, Transform, Camera, SetTexture>;
59
61};
62
64public:
65 void push(RenderCommand command);
66
67 bool pop(RenderCommand& command);
68
69private:
70 std::mutex mutex;
71 std::queue<RenderCommand> queue;
72};
Definition renderQueue.hpp:63
bool pop(RenderCommand &command)
std::queue< RenderCommand > queue
Definition renderQueue.hpp:71
void push(RenderCommand command)
std::mutex mutex
Definition renderQueue.hpp:70
RenderCommandType
Definition renderQueue.hpp:14
@ AddRect
Definition renderQueue.hpp:14
@ RemoveFig
Definition renderQueue.hpp:14
@ AddTriangle
Definition renderQueue.hpp:14
@ SetTexture
Definition renderQueue.hpp:14
@ SetCamera
Definition renderQueue.hpp:14
@ SetTransform
Definition renderQueue.hpp:14
Definition renderQueue.hpp:24
glm::vec2 position
Definition renderQueue.hpp:25
uint32_t index
Definition renderQueue.hpp:29
float width
Definition renderQueue.hpp:26
float height
Definition renderQueue.hpp:27
glm::vec3 color
Definition renderQueue.hpp:28
Definition renderQueue.hpp:32
std::array< glm::vec2, 3 > positions
Definition renderQueue.hpp:33
glm::vec3 color
Definition renderQueue.hpp:34
uint32_t index
Definition renderQueue.hpp:35
Definition renderQueue.hpp:47
float zoom
Definition renderQueue.hpp:49
glm::vec2 position
Definition renderQueue.hpp:48
Definition renderQueue.hpp:38
uint32_t index
Definition renderQueue.hpp:39
Definition renderQueue.hpp:52
std::vector< glm::vec2 > texCoords
Definition renderQueue.hpp:55
uint32_t index
Definition renderQueue.hpp:53
TextureDescriptor textureDesc
Definition renderQueue.hpp:54
Definition renderQueue.hpp:42
uint32_t index
Definition renderQueue.hpp:43
glm::mat4 model
Definition renderQueue.hpp:44
Definition renderQueue.hpp:21
RenderCommandType type
Definition renderQueue.hpp:22
std::variant< AddRect, AddTri, Remove, Transform, Camera, SetTexture > Data
Definition renderQueue.hpp:58
Data data
Definition renderQueue.hpp:60
Definition renderQueue.hpp:16
uint32_t arrayId
Definition renderQueue.hpp:17
uint32_t layerId
Definition renderQueue.hpp:18