Just™ Game Engine
renderer2d.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2021-2022 Konstanty Misiak
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#pragma once
8#include "jng/core/base.hpp"
9
10namespace jng {
11
12 class Texture;
13 struct CircleRendererComponent;
14 struct SpriteRendererComponent;
15
16 namespace Renderer2D {
17
19 {
20 const glm::vec3* vertexPositions;
21 const glm::vec2* textureCoords;
25 };
26
28 {
29 const glm::vec3* vertexPositions;
30 const glm::vec2* localVertexPositions;
35 };
36
37 void init();
38 void shutdown();
39
40 void beginScene(const glm::mat4& viewProjection);
41 void endScene();
42
43 // Quads
44 void drawSprite(const glm::mat4& transform, const SpriteRendererComponent& src, s32 entityID);
45 void drawQuad(const DrawQuadProperties& properties);
46
47 // Circles
48 void drawCircle(const glm::mat4& transform, const CircleRendererComponent& crc, s32 entityID);
49 void drawCircle(const glm::mat4& transform, const glm::vec4& color, float thickness = 1.f, float fade = 0.005f);
50 void drawCircle(const DrawCircleProperties& properties);
51
52 // Lines
53 void drawLine(const glm::vec3& p0, const glm::vec3& p1, const glm::vec4& color);
54 void drawRect(const glm::mat4& transform, const glm::vec4& color);
55
56 void fillQuad(glm::vec3 position, glm::vec2 size, const glm::vec4& color);
57 void fillQuad(glm::vec3 position, glm::vec2 size, const Ref<Texture>& texture, const glm::vec4& color = { 1.f, 1.f, 1.f, 1.f });
58 void fillQuad(const glm::mat4& transform, const glm::vec4& color);
59 void fillQuad(const glm::mat4& transform, const Ref<Texture>& texture, const glm::vec4& color = { 1.f, 1.f, 1.f, 1.f });
60
62 {
67 };
68
70
71 } // namespace Renderer2D
72
73} // namespace jng
void drawQuad(const DrawQuadProperties &properties)
Definition: renderer2d.cpp:353
void drawSprite(const glm::mat4 &transform, const SpriteRendererComponent &src, s32 entityID)
Definition: renderer2d.cpp:285
void shutdown()
Definition: renderer2d.cpp:254
void fillQuad(glm::vec3 position, glm::vec2 size, const glm::vec4 &color)
Definition: renderer2d.cpp:453
const Statistics & getStatistics()
Definition: renderer2d.cpp:511
void beginScene(const glm::mat4 &viewProjection)
Definition: renderer2d.cpp:261
void drawRect(const glm::mat4 &transform, const glm::vec4 &color)
Definition: renderer2d.cpp:440
void drawCircle(const glm::mat4 &transform, const CircleRendererComponent &crc, s32 entityID)
Definition: renderer2d.cpp:309
void init()
Definition: renderer2d.cpp:165
void drawLine(const glm::vec3 &p0, const glm::vec3 &p1, const glm::vec4 &color)
Definition: renderer2d.cpp:418
void endScene()
Definition: renderer2d.cpp:276
Definition: base.hpp:11
int32_t s32
Definition: base.hpp:45
float f32
Definition: base.hpp:47
uint32_t u32
Definition: base.hpp:41
std::shared_ptr< T > Ref
Definition: base.hpp:32
Definition: components.hpp:70
Definition: renderer2d.hpp:28
s32 entityID
Definition: renderer2d.hpp:34
f32 thickness
Definition: renderer2d.hpp:31
const glm::vec2 * localVertexPositions
Definition: renderer2d.hpp:30
f32 fade
Definition: renderer2d.hpp:32
const glm::vec3 * vertexPositions
Definition: renderer2d.hpp:29
u32 color
Definition: renderer2d.hpp:33
Definition: renderer2d.hpp:19
const Ref< Texture > & texture
Definition: renderer2d.hpp:22
s32 entityID
Definition: renderer2d.hpp:24
const glm::vec3 * vertexPositions
Definition: renderer2d.hpp:20
u32 color
Definition: renderer2d.hpp:23
const glm::vec2 * textureCoords
Definition: renderer2d.hpp:21
Definition: renderer2d.hpp:62
u32 quadCount
Definition: renderer2d.hpp:64
u32 lineCount
Definition: renderer2d.hpp:66
u32 drawCalls
Definition: renderer2d.hpp:63
u32 circleCount
Definition: renderer2d.hpp:65
Definition: components.hpp:83