Elevate Engine 1
Loading...
Searching...
No Matches
DebugRenderer.cpp
Go to the documentation of this file.
1#include "eepch.h"
2
3#ifdef EE_EDITOR_BUILD
4
5#include "DebugRenderer.h"
6
11
13{
14 Get().InternalInit();
15}
16
18{
19 Get().InternalRender();
20}
21
22void Elevate::DebugRenderer::InternalInit()
23{
24 InitLineRender();
25}
26
27void Elevate::DebugRenderer::InternalRender()
28{
29 Renderer::PushRenderState({ false, true, false });
30 // Render the lines
33 ClearDebugLines();
34}
35
36void Elevate::DebugRenderer::InitLineRender()
37{
38 m_lineShader = ShaderManager::LoadShader(
39 "Debug",
40 "editor://Shaders/debug.vert",
41 "editor://Shaders/debug.frag",
44 );
45
46 m_lineBuffer.reset(VertexBuffer::Create(m_debugLineArray.data(), (uint32_t)m_debugLineArray.size() * sizeof(DebugVertex)));
47 m_lineBuffer->SetLayout({
48 { ShaderDataType::Float3, "a_Position" },
49 { ShaderDataType::Float4, "a_Color" },
50 });
51
52 m_lineArray.reset(VertexArray::Create());
53 m_lineArray->AddVertexBuffer(m_lineBuffer);
54 m_lineArray->Unbind();
55}
56
57void Elevate::DebugRenderer::ClearDebugLines()
58{
59 if (m_debugLineArray.size() > 0)
60 {
61 m_debugLineArray.clear();
62
63 if (m_lineBuffer)
64 {
65 m_lineBuffer->Resize(0);
66 }
67 }
68}
69
70void Elevate::DebugRenderer::AddDebugLine(DebugLineData line)
71{
72 DebugRenderer& instance = Get();
73 instance.m_debugLineArray.push_back({ line.Start, line.Color });
74 instance.m_debugLineArray.push_back({ line.End, line.Color });
75
76 if (instance.m_lineBuffer)
77 {
78 instance.m_lineBuffer->SetData(instance.m_debugLineArray.data(), (uint32_t)instance.m_debugLineArray.size() * sizeof(DebugVertex));
79 }
80}
81
82#endif
#define EE_SHADER_HEADER
Definition Core.h:32
static void AddDebugLine(DebugLineData line)
static void PushRenderState(const RenderState &newState)
Definition Renderer.cpp:91
static void DrawArray(const VertexArray *vao, DrawPrimitiveType primitive=DrawPrimitiveType::Triangles)
Definition Renderer.cpp:73
static void ApplySystemUniforms(const std::shared_ptr< Shader > &shader)
Definition Renderer.cpp:42
static ShaderPtr LoadShader(const std::string &name, ShaderPtr shader)
static VertexArray * Create()
static VertexBuffer * Create(const void *vertices, const uint32_t size)
Definition Buffer.cpp:11