From d83e269432f3488cc838fc265b8d9993a02ddf8e Mon Sep 17 00:00:00 2001 From: light7734 Date: Wed, 23 Jul 2025 10:11:55 +0330 Subject: [PATCH] refactor: move renderer gl/dx files to private section --- .../{public => private}/dx/blender.hpp | 0 .../{public => private}/dx/buffers.hpp | 0 .../{public => private}/dx/framebuffers.hpp | 0 .../dx/graphics_context.hpp | 0 .../{public => private}/dx/render_command.hpp | 0 .../{public => private}/dx/shader.hpp | 0 .../{public => private}/dx/shared_context.hpp | 0 .../{public => private}/dx/texture.hpp | 0 .../{public => private}/dx/user_interface.hpp | 0 .../{public => private}/dx/vertex_layout.hpp | 0 .../{public => private}/gl/blender.hpp | 0 .../{public => private}/gl/buffers.hpp | 0 .../{public => private}/gl/framebuffers.hpp | 0 .../gl/graphics_context.hpp | 0 .../{public => private}/gl/render_command.hpp | 0 .../{public => private}/gl/shader.hpp | 0 .../{public => private}/gl/shared_context.hpp | 0 .../{public => private}/gl/texture.hpp | 0 .../{public => private}/gl/user_interface.hpp | 0 .../{public => private}/gl/vertex_layout.hpp | 0 .../{public => private}/programs/quad.hpp | 0 .../programs/renderer_program.hpp | 0 .../{public => private}/programs/texture.hpp | 0 .../programs/tinted_texture.hpp | 0 modules/renderer/private/renderer.cpp | 105 ++++++++++-------- modules/renderer/public/renderer.hpp | 18 +-- 26 files changed, 67 insertions(+), 56 deletions(-) rename modules/renderer/{public => private}/dx/blender.hpp (100%) rename modules/renderer/{public => private}/dx/buffers.hpp (100%) rename modules/renderer/{public => private}/dx/framebuffers.hpp (100%) rename modules/renderer/{public => private}/dx/graphics_context.hpp (100%) rename modules/renderer/{public => private}/dx/render_command.hpp (100%) rename modules/renderer/{public => private}/dx/shader.hpp (100%) rename modules/renderer/{public => private}/dx/shared_context.hpp (100%) rename modules/renderer/{public => private}/dx/texture.hpp (100%) rename modules/renderer/{public => private}/dx/user_interface.hpp (100%) rename modules/renderer/{public => private}/dx/vertex_layout.hpp (100%) rename modules/renderer/{public => private}/gl/blender.hpp (100%) rename modules/renderer/{public => private}/gl/buffers.hpp (100%) rename modules/renderer/{public => private}/gl/framebuffers.hpp (100%) rename modules/renderer/{public => private}/gl/graphics_context.hpp (100%) rename modules/renderer/{public => private}/gl/render_command.hpp (100%) rename modules/renderer/{public => private}/gl/shader.hpp (100%) rename modules/renderer/{public => private}/gl/shared_context.hpp (100%) rename modules/renderer/{public => private}/gl/texture.hpp (100%) rename modules/renderer/{public => private}/gl/user_interface.hpp (100%) rename modules/renderer/{public => private}/gl/vertex_layout.hpp (100%) rename modules/renderer/{public => private}/programs/quad.hpp (100%) rename modules/renderer/{public => private}/programs/renderer_program.hpp (100%) rename modules/renderer/{public => private}/programs/texture.hpp (100%) rename modules/renderer/{public => private}/programs/tinted_texture.hpp (100%) diff --git a/modules/renderer/public/dx/blender.hpp b/modules/renderer/private/dx/blender.hpp similarity index 100% rename from modules/renderer/public/dx/blender.hpp rename to modules/renderer/private/dx/blender.hpp diff --git a/modules/renderer/public/dx/buffers.hpp b/modules/renderer/private/dx/buffers.hpp similarity index 100% rename from modules/renderer/public/dx/buffers.hpp rename to modules/renderer/private/dx/buffers.hpp diff --git a/modules/renderer/public/dx/framebuffers.hpp b/modules/renderer/private/dx/framebuffers.hpp similarity index 100% rename from modules/renderer/public/dx/framebuffers.hpp rename to modules/renderer/private/dx/framebuffers.hpp diff --git a/modules/renderer/public/dx/graphics_context.hpp b/modules/renderer/private/dx/graphics_context.hpp similarity index 100% rename from modules/renderer/public/dx/graphics_context.hpp rename to modules/renderer/private/dx/graphics_context.hpp diff --git a/modules/renderer/public/dx/render_command.hpp b/modules/renderer/private/dx/render_command.hpp similarity index 100% rename from modules/renderer/public/dx/render_command.hpp rename to modules/renderer/private/dx/render_command.hpp diff --git a/modules/renderer/public/dx/shader.hpp b/modules/renderer/private/dx/shader.hpp similarity index 100% rename from modules/renderer/public/dx/shader.hpp rename to modules/renderer/private/dx/shader.hpp diff --git a/modules/renderer/public/dx/shared_context.hpp b/modules/renderer/private/dx/shared_context.hpp similarity index 100% rename from modules/renderer/public/dx/shared_context.hpp rename to modules/renderer/private/dx/shared_context.hpp diff --git a/modules/renderer/public/dx/texture.hpp b/modules/renderer/private/dx/texture.hpp similarity index 100% rename from modules/renderer/public/dx/texture.hpp rename to modules/renderer/private/dx/texture.hpp diff --git a/modules/renderer/public/dx/user_interface.hpp b/modules/renderer/private/dx/user_interface.hpp similarity index 100% rename from modules/renderer/public/dx/user_interface.hpp rename to modules/renderer/private/dx/user_interface.hpp diff --git a/modules/renderer/public/dx/vertex_layout.hpp b/modules/renderer/private/dx/vertex_layout.hpp similarity index 100% rename from modules/renderer/public/dx/vertex_layout.hpp rename to modules/renderer/private/dx/vertex_layout.hpp diff --git a/modules/renderer/public/gl/blender.hpp b/modules/renderer/private/gl/blender.hpp similarity index 100% rename from modules/renderer/public/gl/blender.hpp rename to modules/renderer/private/gl/blender.hpp diff --git a/modules/renderer/public/gl/buffers.hpp b/modules/renderer/private/gl/buffers.hpp similarity index 100% rename from modules/renderer/public/gl/buffers.hpp rename to modules/renderer/private/gl/buffers.hpp diff --git a/modules/renderer/public/gl/framebuffers.hpp b/modules/renderer/private/gl/framebuffers.hpp similarity index 100% rename from modules/renderer/public/gl/framebuffers.hpp rename to modules/renderer/private/gl/framebuffers.hpp diff --git a/modules/renderer/public/gl/graphics_context.hpp b/modules/renderer/private/gl/graphics_context.hpp similarity index 100% rename from modules/renderer/public/gl/graphics_context.hpp rename to modules/renderer/private/gl/graphics_context.hpp diff --git a/modules/renderer/public/gl/render_command.hpp b/modules/renderer/private/gl/render_command.hpp similarity index 100% rename from modules/renderer/public/gl/render_command.hpp rename to modules/renderer/private/gl/render_command.hpp diff --git a/modules/renderer/public/gl/shader.hpp b/modules/renderer/private/gl/shader.hpp similarity index 100% rename from modules/renderer/public/gl/shader.hpp rename to modules/renderer/private/gl/shader.hpp diff --git a/modules/renderer/public/gl/shared_context.hpp b/modules/renderer/private/gl/shared_context.hpp similarity index 100% rename from modules/renderer/public/gl/shared_context.hpp rename to modules/renderer/private/gl/shared_context.hpp diff --git a/modules/renderer/public/gl/texture.hpp b/modules/renderer/private/gl/texture.hpp similarity index 100% rename from modules/renderer/public/gl/texture.hpp rename to modules/renderer/private/gl/texture.hpp diff --git a/modules/renderer/public/gl/user_interface.hpp b/modules/renderer/private/gl/user_interface.hpp similarity index 100% rename from modules/renderer/public/gl/user_interface.hpp rename to modules/renderer/private/gl/user_interface.hpp diff --git a/modules/renderer/public/gl/vertex_layout.hpp b/modules/renderer/private/gl/vertex_layout.hpp similarity index 100% rename from modules/renderer/public/gl/vertex_layout.hpp rename to modules/renderer/private/gl/vertex_layout.hpp diff --git a/modules/renderer/public/programs/quad.hpp b/modules/renderer/private/programs/quad.hpp similarity index 100% rename from modules/renderer/public/programs/quad.hpp rename to modules/renderer/private/programs/quad.hpp diff --git a/modules/renderer/public/programs/renderer_program.hpp b/modules/renderer/private/programs/renderer_program.hpp similarity index 100% rename from modules/renderer/public/programs/renderer_program.hpp rename to modules/renderer/private/programs/renderer_program.hpp diff --git a/modules/renderer/public/programs/texture.hpp b/modules/renderer/private/programs/texture.hpp similarity index 100% rename from modules/renderer/public/programs/texture.hpp rename to modules/renderer/private/programs/texture.hpp diff --git a/modules/renderer/public/programs/tinted_texture.hpp b/modules/renderer/private/programs/tinted_texture.hpp similarity index 100% rename from modules/renderer/public/programs/tinted_texture.hpp rename to modules/renderer/private/programs/tinted_texture.hpp diff --git a/modules/renderer/private/renderer.cpp b/modules/renderer/private/renderer.cpp index 4d9044d..b17889d 100644 --- a/modules/renderer/private/renderer.cpp +++ b/modules/renderer/private/renderer.cpp @@ -4,12 +4,13 @@ #include #include #include +#include +#include +#include #include #include #include #include -#include -#include namespace lt { @@ -21,19 +22,25 @@ Renderer::Renderer( CreateInfo create_info ) : m_quad_renderer( - LT_MAX_QUAD_RENDERER_VERTICES, - shared_context, - std::move(create_info.quad_renderer_shader) + create_scope( + LT_MAX_QUAD_RENDERER_VERTICES, + shared_context, + std::move(create_info.quad_renderer_shader) + ) ) , m_texture_renderer( - LT_MAX_TEXTURE_RENDERER_VERTICES, - shared_context, - std::move(create_info.texture_renderer_shader) + create_scope( + LT_MAX_TEXTURE_RENDERER_VERTICES, + shared_context, + std::move(create_info.texture_renderer_shader) + ) ) , m_tinted_texture_renderer( - LT_MAX_TINTED_TEXTURE_RENDERER_VERTICES, - shared_context, - std::move(create_info.tinted_texture_renderer_shader) + create_scope( + LT_MAX_TINTED_TEXTURE_RENDERER_VERTICES, + shared_context, + std::move(create_info.tinted_texture_renderer_shader) + ) ) , m_view_projection_buffer(nullptr) , m_render_command(nullptr) @@ -55,6 +62,10 @@ Renderer::Renderer( m_blender->enable(BlendFactor::SRC_ALPHA, BlendFactor::INVERSE_SRC_ALPHA); } +Renderer::~Renderer() // NOLINT +{ +} + auto Renderer::create( GLFWwindow *windowHandle, Ref sharedContext, @@ -114,7 +125,7 @@ void Renderer::draw_quad_impl( //==================== DRAW_QUAD_TINT ====================// void Renderer::draw_quad_impl(const math::mat4 &transform, const math::vec4 &tint) { - auto map = std::span { m_quad_renderer.get_map_current(), + auto map = std::span { m_quad_renderer->get_map_current(), 4 }; // top left @@ -134,7 +145,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const math::vec4 &tin map[3].tint = tint; // advance - if (!m_quad_renderer.advance()) + if (!m_quad_renderer->advance()) { log_wrn("Exceeded LT_MAX_QUAD_RENDERER_VERTICES: {}", LT_MAX_QUAD_RENDERER_VERTICES); flush_scene(); @@ -147,7 +158,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const Ref &t texture->bind(); auto map = std::span { - m_texture_renderer.get_map_current(), + m_texture_renderer->get_map_current(), 4 }; @@ -168,7 +179,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const Ref &t map[3].texcoord = { 0.0f, 1.0f }; // advance - if (!m_texture_renderer.advance()) + if (!m_texture_renderer->advance()) { log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES); flush_scene(); @@ -185,7 +196,7 @@ void Renderer::draw_quad_impl( texture->bind(); auto map = std::span { - m_tinted_texture_renderer.get_map_current(), + m_tinted_texture_renderer->get_map_current(), 4 }; @@ -209,7 +220,7 @@ void Renderer::draw_quad_impl( map[3].tint = tint; map[3].texcoord = { 0.0f, 1.0f }; - if (!m_tinted_texture_renderer.advance()) + if (!m_tinted_texture_renderer->advance()) { log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES); flush_scene(); @@ -256,66 +267,66 @@ void Renderer::begin_scene_impl( m_view_projection_buffer->un_map(); // map renderers - m_quad_renderer.map(); - m_texture_renderer.map(); - m_tinted_texture_renderer.map(); + m_quad_renderer->map(); + m_texture_renderer->map(); + m_tinted_texture_renderer->map(); } void Renderer::flush_scene() { /* tinted texture renderer */ - m_tinted_texture_renderer.un_map(); - if (m_tinted_texture_renderer.get_quad_count()) + m_tinted_texture_renderer->un_map(); + if (m_tinted_texture_renderer->get_quad_count()) { - m_tinted_texture_renderer.bind(); - m_render_command->draw_indexed(m_tinted_texture_renderer.get_quad_count() * 6u); + m_tinted_texture_renderer->bind(); + m_render_command->draw_indexed(m_tinted_texture_renderer->get_quad_count() * 6u); } /* quad renderer */ - m_quad_renderer.un_map(); - if (m_quad_renderer.get_quad_count()) + m_quad_renderer->un_map(); + if (m_quad_renderer->get_quad_count()) { - m_quad_renderer.bind(); - m_render_command->draw_indexed(m_quad_renderer.get_quad_count() * 6u); + m_quad_renderer->bind(); + m_render_command->draw_indexed(m_quad_renderer->get_quad_count() * 6u); } /* texture renderer */ - m_texture_renderer.un_map(); - if (m_texture_renderer.get_quad_count()) + m_texture_renderer->un_map(); + if (m_texture_renderer->get_quad_count()) { - m_texture_renderer.bind(); - m_render_command->draw_indexed(m_texture_renderer.get_quad_count() * 6u); + m_texture_renderer->bind(); + m_render_command->draw_indexed(m_texture_renderer->get_quad_count() * 6u); } - m_quad_renderer.map(); - m_texture_renderer.map(); - m_tinted_texture_renderer.map(); + m_quad_renderer->map(); + m_texture_renderer->map(); + m_tinted_texture_renderer->map(); } void Renderer::end_scene_impl() { /* tinted texture renderer */ - m_tinted_texture_renderer.un_map(); - if (m_tinted_texture_renderer.get_quad_count()) + m_tinted_texture_renderer->un_map(); + if (m_tinted_texture_renderer->get_quad_count()) { - m_tinted_texture_renderer.bind(); - m_render_command->draw_indexed(m_tinted_texture_renderer.get_quad_count() * 6u); + m_tinted_texture_renderer->bind(); + m_render_command->draw_indexed(m_tinted_texture_renderer->get_quad_count() * 6u); } /* quad renderer */ - m_quad_renderer.un_map(); - if (m_quad_renderer.get_quad_count()) + m_quad_renderer->un_map(); + if (m_quad_renderer->get_quad_count()) { - m_quad_renderer.bind(); - m_render_command->draw_indexed(m_quad_renderer.get_quad_count() * 6u); + m_quad_renderer->bind(); + m_render_command->draw_indexed(m_quad_renderer->get_quad_count() * 6u); } /* texture renderer */ - m_texture_renderer.un_map(); - if (m_texture_renderer.get_quad_count()) + m_texture_renderer->un_map(); + if (m_texture_renderer->get_quad_count()) { - m_texture_renderer.bind(); - m_render_command->draw_indexed(m_texture_renderer.get_quad_count() * 6u); + m_texture_renderer->bind(); + m_render_command->draw_indexed(m_texture_renderer->get_quad_count() * 6u); } // reset frame buffer diff --git a/modules/renderer/public/renderer.hpp b/modules/renderer/public/renderer.hpp index 5034afc..32af2fa 100644 --- a/modules/renderer/public/renderer.hpp +++ b/modules/renderer/public/renderer.hpp @@ -1,6 +1,5 @@ #pragma once -// #include #include #include @@ -8,11 +7,6 @@ #include #include #include -/// - -#include -#include -#include #include #define LT_MAX_QUAD_RENDERER_VERTICES (1028u * 4u) @@ -32,6 +26,10 @@ class Camera; class WindowResizedEvent; class Shader; +class TintedTextureRendererProgram; +class QuadRendererProgram; +class TextureRendererProgram; + class Renderer { public: @@ -107,6 +105,8 @@ public: s_context->end_scene_impl(); } + ~Renderer(); + void on_window_resize(const WindowResizedEvent &event); void begin_frame(); @@ -116,11 +116,11 @@ public: private: static Renderer *s_context; - QuadRendererProgram m_quad_renderer; + Scope m_quad_renderer; - TextureRendererProgram m_texture_renderer; + Scope m_texture_renderer; - TintedTextureRendererProgram m_tinted_texture_renderer; + Scope m_tinted_texture_renderer; Scope m_view_projection_buffer;